问题标签 [kubernetes-operator]

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 投票
1 回答
377 浏览

kubernetes - 如何为某个资源 Kubernetes Go Operator 生成事件

我正在用 Go 编写一个 Kubernetes Operator,我想以与 Pod 相同的方式生成事件,即在协调的每个点我想编写一个可以使用kubectl describe myresource.

我找到了可以让我这样做的包,但我不明白如何使用它:https ://github.com/kubernetes/client-go/blob/master/tools/record/event.go

示例骨架代码:

0 投票
1 回答
53 浏览

kubernetes - Kubernetes 准入控制器(插件)和准入 Webhook 有什么区别?

准入控制器(插件)和准入 Webhooks 从表面上看非常相似。实际的功能差异是什么?

0 投票
1 回答
1004 浏览

kubernetes - CRD状态有什么用?

我目前正在使用operator-sdk. 该运算符创建了 twoStatefulSet和 two Service,并带有一些业务逻辑。

我想知道 CRD 状态是什么?在我的协调方法中,我使用默认客户端(即r.List(ctx, &setList, opts...))从集群中获取数据,我是否应该将数据存储在状态中以供以后使用?如果是这样,这个状态有多可靠?我的意思是它持续存在吗?如果控制平面死了,它仍然可用吗?灾难恢复怎么办,如果持久化的数据消失了怎么办?这种情况不会使 CRD 状态的使用无效吗?

0 投票
2 回答
468 浏览

kubernetes - Pod 与 StatefulSet 中不同节点的亲和性

我正在创建 StatefulSet,我希望一个 StatefulSet 中的 pod 分布在 k8s 集群的不同节点上。就我而言 - 一个 StatefulSet 是一个数据库副本集。

但是,通过这些设置,我得到了相反的结果。storage-0-0并且storage-0-1在同一个副本集和同一个节点上......

而且,它们具有完全相同的标签mydb.io/replicaset-uuid

0 投票
0 回答
100 浏览

docker - 使用 kubernetes 操作符重用 Airflow 钩子

是否可以在运行 python 脚本的 kubernetes 运算符中导入气流在代码中提供的挂钩(雪花挂钩、aws 挂钩等)?我可能对如何使用气流有错误的想法。

例子。我让 Airflow 与 kubernetes 集群一起运行。dag 的任务在容器内。一项任务从 SQL 中获取一些数据并将其上传到 S3。如果我想在容器内的 python 脚本中执行此操作,我需要对所有这些东西进行编码(可能会出现错误并花费时间),如果我可以重用气流在代码中具有的库(挂钩),我可以节省时间,而且,很多开发人员都支持我。

谢谢

0 投票
1 回答
87 浏览

kubernetes - 如何使用 Operator SDK 正确垃圾收集对象?

Kubernetes Operators 的 Operator-SDK 有一个ctrl.SetControllerReference()功能,声称当管理的自定义资源被删除时,它会自动启用垃圾收集对象。

有时它似乎没有删除任何东西。我做错了什么?

0 投票
0 回答
155 浏览

kubernetes - CouchDB Kubernetes 操作员

我需要在我们的生产环境中部署 couchdb,并且我一直在尝试使用 couchdb 运算符(https://operatorhub.io/operator/couchdb-operator)以使部署的集群更具弹性。我试过使用官方的舵图,但它对我们来说不够稳定。

我们的 couchdb 部署需要使用私有存储库中的映像,并且我们需要配置一个内部 sidecar 应用程序,该应用程序将作为容器部署在集群中每个节点的同一个 pod 中。

我在这里查看了文档:https ://cloud.ibm.com/docs/Cloudant?topic= Cloudant-apache-couchdb-operator 我在这里找不到任何关于使用我自己的图像或配置边车应用程序的参考,我也尝试访问 couchdb-operator pod 并尝试寻找我可以使用的东西,但找不到任何有用的东西。

作为一个整体,我对 kubernetes 运算符没有太多经验,所以这对于使用运算符来说似乎违反直觉,但我的问题是:我可以以某种方式编辑运算符的代码,以便我可以配置外部配置,比如定义我自己的存储库/图像、边车,甚至服务?

在此先感谢,院长。

0 投票
0 回答
234 浏览

postgresql - 用于逻辑备份的 Zalando Postgres 操作员配置问题

vaule-crd.yaml具有pod_environment_configmap选项,该选项将 configmap 数据作为环境变量注入每个数据库 pod。

此选项是否也适用于操作员管理的所有 cron 作业?现在,我必须在configLogicalBackup部分对 S3 凭据进行硬编码,例如logical_backup_s3_access_key_id, logical_backup_s3_secret_access_key. 逻辑备份 pod 是否共享中定义的环境pod_environment_configmap

0 投票
2 回答
2144 浏览

kubernetes - 如何为任意对象触发 Kubernetes 控制器协调器?

概述

我正在为可以在集群中垂直扩展部署的 VerticalScaler CRD 编写 Kubernetes 控制器。我的规范引用了集群中现有的部署对象。如果修改或删除了引用的部署,我想将 VerticalScaler 的协调请求排入队列。

问题

当该资源不属于控制器并且该资源不包含对其资源由控制器管理的对象的引用时,是否有一种观察任意资源的好方法?

我发现了什么

我认为这应该在控制器的 Kubebuilder 标准SetupWithManager函数中进行配置,尽管可以在其他地方设置手表。

我一直在controller-runtime/pkg/builder和 Kubebuilder 文档中寻找一种好的方法。我发现的最接近的例子是kubebuilder-v1 文档中关于 watch 的“Watching Arbitrary Resources”部分:

控制器可以监视任意资源并将它们映射到控制器管理的资源的键。控制器甚至可以将一个事件映射到多个键,为每个键触发 Reconciles。

示例:为了响应集群扩展事件(例如删除或添加节点),控制器将监视节点并将监视事件映射到控制器管理的对象的键。

我的挑战是如何将部署映射到依赖的 VerticalScaler,因为部署中不存在此信息。我可以在 VerticalScaler 上创建一个索引,并使用字段选择器从MapFunc中查找依赖的 VerticalScalers ,但我似乎不应该在 MapFunc 中执行 I/O。如果 list-Deployments 操作失败,我将无法重试或重新排队更改。

我让这段代码使用这种不完美的方法工作:

其他考虑的方法

只是为了覆盖我的基础,我应该提到我不想将 VerticalScaler 设置为 Deployment 的所有者,因为如果 VerticalScaler 被删除,我不想垃圾收集 Deployment。即使是非控制器 ownerReference 也会导致垃圾收集。

我也考虑过使用Channel watcher,但文档说这是针对源自集群外部的事件,但事实并非如此。

我还可以为 Deployment 创建一个单独的控制器,并从该控制器的 Reconcile 函数更新依赖 VerticalScaler(s) 上的某些字段,但是我还需要一个终结器来处理在删除 Deployment 时触发 VerticalScaler 协调,并且似乎有点矫枉过正。

我可以让我的 VerticalScaler 协调器向部署添加注释,但是如果由例如 Helm 管理,部署注释可能会被覆盖。在部署之前创建 VerticalScaler 的情况下,这也不会导致协调请求。

0 投票
0 回答
105 浏览

kubernetes - 如何使用 minio-operator 创建单卷部署

过去我能够创建一个单卷 minio pod,但使用新的 minio-operator,每个 pod 的最小卷数为 4。 https://github.com/minio/operator/blob/master/examples/tenant -tiny.yaml

有没有办法使用新操作员创建单卷 minio 部署?