问题标签 [kubernetes-custom-resources]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 如何使用 client-go 访问 kubernetes CRD?
我的 CRD 很少,但我不确定如何查询 kube-apiserver 以获取 CR 列表。任何人都可以提供任何示例代码吗?
go - kubectl 如何配置 CRD?
我的 kubernetes 集群中已经定义了一些 CRD。
kubectl
可以很好地创建/更新/删除资源。
当我尝试使用程序进行这些操作时,我通过搜索找到的方法是使用以下工具生成代码:
https://github.com/kubernetes/code-generator
我想知道为什么kubectl
可以在不为 CRD 生成代码的情况下开箱即用。
是否需要生成代码才能添加或删除 CRD 资源?
谢谢!
kubernetes - Operator 在自定义资源中接收 Secret 的最佳实践
我在 Google 上没有找到任何答案,但我可能只是不知道要搜索哪些术语。
在 CRD 中,有没有办法在规范中定义一个机密字段(因此不应以纯文本形式存储)?例如,如果自定义资源需要包含一个 API 令牌,您如何在 CRD 中定义它?
我的一个想法是让用户在 CRD 之外创建一个 Secret,然后在自定义资源字段中提供该密钥的名称,以便操作员可以在需要时从 K8s API 查询它(并且显然需要关联的 RBAC配置为使操作员具有对 Secret 的读取权限)。因此 CRD 中的字段将只是一个普通字符串,即目标 Secret 的名称。
但是有更好的方法吗?任何现有的最佳实践?
kubernetes - 尝试更新 k8s CR 资源时“请求实体太大:限制为 3145728”
我们在尝试更新自定义资源对象时遇到错误“请求实体太大:限制为 3145728”。如果有人知道如何从 k8s 端更改大小限制,那将非常有帮助。用户是否有任何公开的参数?
kubernetes - Kubernetes 'watch' 没有从 pod 内部接收事件
我正在使用 EKS 集群。我有一个在自定义资源上调用“监视”API 的脚本。当我使用笔记本电脑上的集群管理员凭据运行此脚本时,我可以看到事件按预期到达。但是,每当我使用集群内安全凭证在 pod 内运行此脚本时,都不会出现任何事件,但也不会出现身份验证或其他错误。这似乎不是命名空间问题,因为无论资源是否在与脚本经过身份验证的相同命名空间中创建,以及 pod 所在的位置,我都看到相同的行为。
这可能是什么原因造成的?
我提出的 API 请求是:
GET /apis/mydomain.com/v1/mycustomresource?watch=1
感激地收到任何帮助。
这是集群角色:
...这是 ClusterRoleBinding:
...以及 pod 的 ServiceAccount:
脚本运行的部署:
kubernetes - AWS EKS 服务账户集群角色绑定无法正常访问禁止访问
我正面临 AWS EKS 集群角色的问题,看起来绑定到服务帐户无法正常工作。
服务帐号
集群角色
集群角色绑定
集群服务器版本:v1.17.6-eks-4e7f64
Python 客户端尝试使用 kubernetes==11.0.0 以及 kubernetes==9.0.0 和 10。对 pod 和其他基础资源执行操作正常。代码:
错误日志:
还列出失败的部署:
非常感谢任何帮助,我真的被困住了。
python - 无法使用 kubernetes python 客户端创建 CRD
发生了什么
我正在尝试使用 kubernetes python 客户端在 kubernetes 中创建自定义资源定义,但我无法这样做,如果有人可以在这里解释我做错了什么会很有帮助
你期望发生的事情:创建 CRD
如何重现它(尽可能最小和精确):
还有什么我们需要知道的吗?:
环境:
- Kubernetes 版本(
v1.18.6
): - 操作系统(Ubuntu 20.04):
- Python 版本 (
3.8.2
) - Python 客户端版本 (
11.0.0
)
kubernetes - Operator 将 ConfigMap 或 Secret 传递给控制器的最佳实践
目前,我是新手,正在研究 K8s Operator-sdk。我有一个初始化 Deployment 对象的 ReconcileController,该 Deployment 需要 configmap 和秘密资源。如
我想知道如何将 configmap 和秘密资源传递给控制器。我想可能有两种选择:
方法一:我先创建了configmap对象和secret对象,然后把它们的名字放在CRD里,然后ReconcileController就会收到configmap/secret的名字,就可以访问configmap对象和secret对象了。
方法 2:我将 configmap/secret 原始数据放在磁盘上,在 ReconcileController 中,我读取 configmap/secret 数据并使用 K8s API 动态生成 configmap/secret 对象,然后我的 Deployment 可以访问它们。对于这种方式,我感觉 ReconcileController 是一个循环运行,而我希望 configmap/secret 可以生成一次,我不确定是否可行。
我认为这是一个非常常见的情况,但我不知道什么是最佳实践。
我很欣赏你的想法和观点。
kubernetes - Operator 获取 Deployment 配置的最佳实践
我在做operator-sdk,在控制器中,我们经常需要创建一个Deployment对象,而Deployment资源有很多配置项,比如环境变量或者端口定义等等。我想知道获取这些值的最佳方法是什么,我不想对它们进行硬编码,例如 variable_a 或 variable_b。
可能,您可以将它们作为规范放入 CRD,然后将它们传递给 Operator Controller;或者你可以把它们放在 configmap 中,然后将 configmap 名称传递给 Operator Controller,Operator Controller 可以访问 configmap 来获取它们;或者,也许您可以放入模板文件,然后在操作员控制器中,控制器必须读取该模板文件。
处理这种情况的最佳方法或最佳实践是什么?感谢您分享您的想法或观点。
python - 尝试使用 python 客户端获取 CRD 时出现 404
发生了什么
我正在尝试使用 kubernetes python 客户端在 kubernetes 中创建自定义对象,但我无法这样做,如果有人可以在这里解释我做错了什么会很有帮助
您期望发生的事情:找到自定义对象
如何重现它(尽可能最小和精确):
还有什么我们需要知道的吗?:我可以使用所有其他 api,包括 create_namespaced_custom_object() 我可以使用“kubectl get backup -n velero”查看这个自定义对象
自定义对象
环境:
- Kubernetes 版本(v1.18.6)
- 操作系统(Linux 20.04):
- Python 版本 (3.8.2)
- Python 客户端版本 (12.0.0a1)