问题标签 [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.
kubernetes - Tuned Operator 不激活自定义配置文件 (Openshift 4.6.18)
Openshift 默认提供“node-tuning-operator”来调低系统。
我们可以使用自定义资源 (CR) 创建自定义配置文件。
但是,操作员没有加载/激活自定义配置文件。
它不是激活我的自定义配置文件,而是激活 openshift 提供的默认配置文件。
我仍在努力找出正确的配置文件配置。
调谐操作员未激活我的自定义配置文件可能是什么问题?
kubernetes - 有没有办法修改 kubernetes 对象的元数据?
我正在尝试修改 k8s 对象的元数据?
当我kubectl edit ....
对该对象进行更改并保存它时,它会说edited
.
但是当我kubectl describe
在那个对象上做时,它仍然在元数据中显示旧值。
go - 在创建自定义资源拥有的秘密时再次协调触发器
我使用 operator-sdk 创建了一个自定义资源DatabaseService
。创建DatabaseService
CR 应触发Reconcile
从第三方获取机密后在 CR 命名空间中创建机密的函数。
我将 CR 设置为秘密的所有者,这样每当手动删除秘密时,协调功能就会再次触发并重新创建秘密。
这是代码:
我观察到,如果我在调用之前将 CR 设置为秘密的所有者createOrUpdateSecret
- 将再次触发协调功能,因为拥有的对象(秘密)中的某些内容发生了变化。
我的 Reconcile 逻辑是幂等的,所以这不是一个大问题。但是,在从内部对拥有的对象进行更改后,我无需Reconcile
再次运行Reconcile
。现在,每次 Reconcile 创建/更新秘密时,它都会再次运行。这种行为似乎有点笨拙,并导致操作员的额外工作以及对第三方的额外调用。
有没有办法绕过从内部重新激活 Reconcile 创建/更新拥有的对象Reconcile
?还是不建议这样做,我应该允许反复运行协调直到没有任何改变?
kubernetes - Kubernetes python API 获取 CRD 实例
我目前正在为 Kubernetes 使用 Python API,我必须:
检索自定义资源名称的实例
FADepl
。编辑该实例的值。
在终端中,我将简单地列出所有FADepls
内容,kubectl get fadepl
然后使用kubectl edit fadepl <fadepl_name>
. 我检查了Python 的 K8s API,但找不到我需要的东西。我可以用 API 做些什么吗?
先感谢您!
kubernetes - Kubernetes中多版本CRD存储和Hub版本的区别
Kubernetes 中的多版本 CRD 存储和 Hub 版本有什么区别?可以存储版本和集线器版本可以不同。
假设我有 2 个版本的 CRD v1 和 v2,最初 v1 被标记为集线器版本和存储版本。现在,如果我想将 v2 迁移/标记为存储版本,我是否也必须更改我的转换 webhook 并且必须将 v2 标记为集线器版本,或者不进行任何更改并将 v1 作为集线器并将 v2 作为存储版本。
kubernetes - K8s 中受限用户需要 CRD 的访问权限
在我的场景中,用户只能访问四个命名空间,他将使用下面的上下文在命名空间之间切换。我怎样才能让他访问 CRD 以及他对四个命名空间的现有访问权限。
尝试了以下两个选项。选项 2 是建议,但不适用于任何一个。
选项 1:将 CRD 添加到现有角色
角色
角色绑定
选项 2:将 CRD 作为新角色添加到“dev-crd-ns”命名空间
kubernetes - 调试 Kubernetes Custom Operator 上的 Reconcile 触发器的原因
我有一个自定义操作符,它监听我在 Kubernetes 集群中定义的 CRD 中的变化。
每当定义的自定义资源发生变化时,自定义运算符将协调并幂等地创建一个秘密(将由自定义资源拥有)。
我期望操作员仅在自定义资源或它拥有的秘密发生更改时才进行协调。
我观察到的是,由于某种原因,该函数会以奇怪的间隔Reconcile
触发集群上的每个 CR,而对相关实体没有可观察到的变化。我已经尝试专注于 CR 的特定实例,并遵循Reconcile
需要它的时间。这些调用的间隔很奇怪。电话似乎在两个系列之间交替 - 一个从 10 小时开始,一次减少 7 分钟。另一个从 7 分钟开始,每次增长 7 分钟。
为了演示,在这些时间进行协调triggered
(给或花几秒钟):
每当递减间隔小于 7 小时时,它会重置为 10 小时间隔。与不断增长的系列相同 - 一旦间隔高于 3 小时,它就会重置回 7 分钟。
我的主要问题是如何调查 Reconcile 被触发的原因?
我在此处附上 CRD 的清单、操作员和 CR 的示例清单:
笔记:
- Reconcile 完成后,我返回:
所以这不应该是重复触发的原因。
- 我要补充一点,我最近将 Kubernetes 集群版本更新为 v1.20.8-gke.2101。
kubernetes - 使用 Kubernetes 和 CRDs 作为数据库,然后搜索
我的背景来自更传统的 LAMP 堆栈,但具有很强的 RDBMS 方向,所以对我来说,生活中的一切(包括购物清单)都是一个潜在的关系数据库。
我的公司现在完全致力于使用 golang 和 kubernetesCRD
作为数据库的等价物,该数据库具有一些关系方面,如一对多,但也有一些 NOSQL 方面的记录。
这很好,但是除了根 UUID 或唯一名称之外,您如何搜索任何内容?在 Oracle 或 MySQL 中,您可以执行以下操作:
现在所有这些都在窗外了吗?除此之外,连接或特别是左连接是否不再可用?我一直在搜索这方面的信息,到目前为止还没有找到任何东西。
我很欣赏细节和使用策略。谢谢。
kubernetes - CRD 版本迁移必须双向工作吗?
我开发了一个使用 CRD 的组件,它有两个版本 - v1 和 v2。可以根据 v1 定义创建 v2 资源,但不能以相反的方式完成。V2 只是删除了一些字段,因为它们不再需要了。我开发了一个网络挂钩来自动转换现有资源。转换在 crd 定义中定义如下:
v2 版本定义为served
andstorage
而 v1 仅定义为served
. 当询问从 v1 到 v2 的转换时,我的转换 webhook 成功返回,但在发出从 v2 到 v1 的转换请求时失败。当我尝试使用 v1 定义创建新资源时,我看到一个错误,指出from server for: "v1resource.yml": conversion webhook for component/v2, Kind=Proponent failed: Incompatible conversion
. 在日志中,我看到 Kubernetes 查询我的钩子以便从 v2 转换到 v1,在此之前它请求从 v1 转换到 v2。当我直接创建 v2 资源时,一切正常。为什么 Kubernetes 会先将资源转换为 v2,然后再尝试降级?crds的版本必须相互兼容吗?
请注意,当我允许从 v2 转换到 v1 并使用一些虚拟字段来填充定义时,一切都开始按预期工作。这意味着创建了一个v1资源,然后迁移到v2
版本:
kubernetes-helm - 使用 operator-sdk 的基于 helm 的操作员的 Kubernetes 自定义资源状态
我创建了一个基于 Helm 的 Freeradius 服务器操作员。
我希望每个 Free Radius 实例在自定义资源状态中包含 Nodeport 服务资源 IP 和端口号。
有没有办法只使用基于 Helm 的运算符来做到这一点?