问题标签 [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.

0 投票
2 回答
1157 浏览

go - 如何使用 client-go 访问 kubernetes CRD?

我的 CRD 很少,但我不确定如何查询 kube-apiserver 以获取 CR 列表。任何人都可以提供任何示例代码吗?

0 投票
1 回答
64 浏览

go - kubectl 如何配置 CRD?

我的 kubernetes 集群中已经定义了一些 CRD。 kubectl可以很好地创建/更新/删除资源。

当我尝试使用程序进行这些操作时,我通过搜索找到的方法是使用以下工具生成代码:

https://github.com/kubernetes/code-generator

我想知道为什么kubectl可以在不为 CRD 生成代码的情况下开箱即用。

是否需要生成代码才能添加或删除 CRD 资源?

谢谢!

0 投票
1 回答
277 浏览

kubernetes - Operator 在自定义资源中接收 Secret 的最佳实践

我在 Google 上没有找到任何答案,但我可能只是不知道要搜索哪些术语。

在 CRD 中,有没有办法在规范中定义一个机密字段(因此不应以纯文本形式存储)?例如,如果自定义资源需要包含一个 API 令牌,您如何在 CRD 中定义它?

我的一个想法是让用户在 CRD 之外创建一个 Secret,然后在自定义资源字段中提供该密钥的名称,以便操作员可以在需要时从 K8s API 查询它(并且显然需要关联的 RBAC配置为使操作员具有对 Secret 的读取权限)。因此 CRD 中的字段将只是一个普通字符串,即目标 Secret 的名称。

但是有更好的方法吗?任何现有的最佳实践?

0 投票
1 回答
1654 浏览

kubernetes - 尝试更新 k8s CR 资源时“请求实体太大:限制为 3145728”

我们在尝试更新自定义资源对象时遇到错误“请求实体太大:限制为 3145728”。如果有人知道如何从 k8s 端更改大小限制,那将非常有帮助。用户是否有任何公开的参数?

0 投票
1 回答
307 浏览

kubernetes - Kubernetes 'watch' 没有从 pod 内部接收事件

我正在使用 EKS 集群。我有一个在自定义资源上调用“监视”API 的脚本。当我使用笔记本电脑上的集群管理员凭据运行此脚本时,我可以看到事件按预期到达。但是,每当我使用集群内安全凭证在 pod 内运行此脚本时,都不会出现任何事件,但也不会出现身份验证或其他错误。这似乎不是命名空间问题,因为无论资源是否在与脚本经过身份验证的相同命名空间中创建,以及 pod 所在的位置,我都看到相同的行为。

这可能是什么原因造成的?

我提出的 API 请求是:

GET /apis/mydomain.com/v1/mycustomresource?watch=1

感激地收到任何帮助。

这是集群角色:

...这是 ClusterRoleBinding:

...以及 pod 的 ServiceAccount:

脚本运行的部署:

0 投票
1 回答
483 浏览

kubernetes - AWS EKS 服务账户集群角色绑定无法正常访问禁止访问

我正面临 AWS EKS 集群角色的问题,看起来绑定到服务帐户无法正常工作。

服务帐号

集群角色

集群角色绑定

集群服务器版本:v1.17.6-eks-4e7f64

Python 客户端尝试使用 kubernetes==11.0.0 以及 kubernetes==9.0.0 和 10。对 pod 和其他基础资源执行操作正常。代码:

错误日志:

还列出失败的部署:

非常感谢任何帮助,我真的被困住了。

0 投票
1 回答
673 浏览

python - 无法使用 kubernetes python 客户端创建 CRD

发生了什么

我正在尝试使用 kubernetes python 客户端在 kubernetes 中创建自定义资源定义,但我无法这样做,如果有人可以在这里解释我做错了什么会很有帮助

你期望发生的事情:创建 CRD

如何重现它(尽可能最小和精确)

还有什么我们需要知道的吗?

环境

  • Kubernetes 版本(v1.18.6):
  • 操作系统(Ubuntu 20.04):
  • Python 版本 ( 3.8.2)
  • Python 客户端版本 ( 11.0.0)
0 投票
0 回答
273 浏览

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 可以生成一次,我不确定是否可行。

我认为这是一个非常常见的情况,但我不知道什么是最佳实践。

我很欣赏你的想法和观点。

0 投票
1 回答
889 浏览

kubernetes - Operator 获取 Deployment 配置的最佳实践

我在做operator-sdk,在控制器中,我们经常需要创建一个Deployment对象,而Deployment资源有很多配置项,比如环境变量或者端口定义等等。我想知道获取这些值的最佳方法是什么,我不想对它们进行硬编码,例如 variable_a 或 variable_b。

可能,您可以将它们作为规范放入 CRD,然后将它们传递给 Operator Controller;或者你可以把它们放在 configmap 中,然后将 configmap 名称传递给 Operator Controller,Operator Controller 可以访问 configmap 来获取它们;或者,也许您可​​以放入模板文件,然后在操作员控制器中,控制器必须读取该模板文件。

处理这种情况的最佳方法或最佳实践是什么?感谢您分享您的想法或观点。

0 投票
1 回答
2368 浏览

python - 尝试使用 python 客户端获取 CRD 时出现 404

发生了什么

我正在尝试使用 kubernetes python 客户端在 kubernetes 中创建自定义对象,但我无法这样做,如果有人可以在这里解释我做错了什么会很有帮助

您期望发生的事情:找到自定义对象

如何重现它(尽可能最小和精确)

还有什么我们需要知道的吗?:我可以使用所有其他 api,包括 create_namespaced_custom_object() 我可以使用“kubectl get backup -n velero”查看这个自定义对象

CRD https://gist.githubusercontent.com/talhalatifkhan/c6eba420e327cf5ef8da1087c326e0a1/raw/d030950775b87a60ecfdb4370fbd518169118d26/gistfile1.txt

自定义对象

https://gist.githubusercontent.com/talhalatifkhan/0537695a1f08b235cbe87d83a3f83296/raw/030cf503a33a9162251a61380105c719037b90ad/gistfile1.txt

环境

  • Kubernetes 版本(v1.18.6)
  • 操作系统(Linux 20.04):
  • Python 版本 (3.8.2)
  • Python 客户端版本 (12.0.0a1)