问题标签 [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.
kubernetes - 如何将基于 ansible 的 Kubernetes 操作员部署的日志详细程度从 INFO 减少到 WARN 或 ERROR
我写了一个基于 ansible 的 kubernetes 运算符,我试图找出一种方法来通过降低日志详细级别来减少运算符部署 pod 生成的日志。
kubectl 记录 netqedge-7f8885fb85-5jk9c
netqedge 是基于 ansible 的运算符
操作员日志
kubernetes - 确定 Kubernetes 中 Airflow 的服务帐户
我在 Kubernetes 一个 pod、2 个容器 - 网络服务器和调度程序中运行 Airflow。配置中的 KubernetesExecutor
但是由于组织设置,默认服务帐户的调度程序无法工作,没有足够的角色。我无法更改此设置
所以我创建了需要的服务帐户roles
等roleBinging
。如何设置 Airflow 以使用该 SA 运行调度程序?
go - 在 Operator SDK 中混合实现语言 - Helm、Go、Ansible
我需要将多个容器部署到 Kubernetes 集群。目标是自动化 Kafka、Kafka Connect、PostgreSQL 等的部署。其中一些已经提供了我们可以使用的 Helm 操作符。所以我的问题是,我们能否以某种方式在操作员内部使用这些 helm 操作员?如果是这样,最好的方法是什么?
到目前为止,我能想到的唯一方法是从部署应用程序中调用 helm setup 控制台命令。另一种方法,不使用这些 helm 文件,将在我自己的 operator 中实现每个 operator 的功能,这似乎没有多大意义,因为我需要的东西已经开发并且是公开的。
我对运营商开发很陌生,所以如果这是一个愚蠢的问题,请原谅。
编辑:运营商的主要目的是部署 X 数据库。除此之外,我们还希望有一个可以立即部署整个系统的操作员/捆绑包。即使我们对某些容器有额外的任务,使用操作符进行捆绑是否有意义?这样,用户将在 yaml 文件中指定:
并且将创建 2 个 PostgreSQL 数据库。然后可以在其他 yaml 文件中或在同一个 yaml 文件中进一步提及这些数据库。手头案例:数据库中的信息将由 Debezium(另一个容器)提取,因此 Debezium 需要知道它们的地址。所以运营商应该创建一个服务并将服务地址与数据库名称相关联。
这是 ETL 系统的一部分。这个想法是操作员可以通过处理大部分配置来轻松部署整个系统。考虑到这一点,我们在考虑是否不可能选择现有的 Helm 操作员(或其他类型的操作员)并通过对配置进行少量修改(例如不同数据库的不同端口)来部署它们。
但是在阅读了F1ko的回复后,我获得了新的视角。也许这对于最初预期的操作员来说是不可能的?
Edit2:对edit1的澄清。
kubernetes - 一个 Kubernetes 集群可以处理多少个 CR(自定义资源)?
- 一个 k8s 集群可以处理多少个 CRD 的 CR?
- 某个控制器(或操作员)可以协调多少个 CR?
谢谢!
kubernetes - 使用运算符创建具有空环境变量的子 Pod 会导致无限循环
我有一个元控制器(操作员)。它使用自定义 CRD。当它收到sync
调用时,它会创建几个子资源:
- 荚
- 服务帐户
- 角色
- 角色绑定
pod 是使用有效图像创建的。在它的环境变量中,有一个设置了一个空字符串。
{ "name": "PARTITIONS", "value": "" }
这将返回到元控制器。元控制器开始创建子对象。
然后它注意到由于PARTITIONS
变量,观察到的状态和实际状态之间存在差异。
因此,它会杀死启动的 pod,并再次向我的端点发送同步请求。
这会导致无限循环,因为我的端点查看 request.children,发现 pod 丢失,添加一个新 pod 并返回。过了一会儿,它又被删除了,无穷无尽。
这是 Metacontroller 中的错误吗?
kubernetes - Kubernetes pod failing because of incorrect container command
I am creating a egress-operator. I have a pod egress-operator-controller-manager
created from makefile by command make deploy IMG=my_azure_repo/egress-operator:v0.1
. The pod is failing , its showing error in pod description as:
I suspect that in manager.yaml
, under command:
/manager is executed.
Can someone let me know what is going wrong in this manager.yaml
and whether /manager
is valid under command:
in deployment.yaml
Debugging UPDATE
Instead of running Dockerfile, now I just build and run image_azure_repo/egress-operator:v0.1
locally (on same ubuntu 18 VM), When I try to login with: docker exec -it <container_id> /bin/bash
, I am getting error :
This is similar error what I see in pod description. Instead of /bin/bash
, I also tried docker exec
with /bin/sh
and only sh
; Its giving same error
mongodb - MongoDB Community Kubernetes Operator 和自定义持久卷
我正在尝试使用 Minikube 中的 MongoDB Community Kubernetes Operator 部署 MongoDB 副本集。
我按照官方 GitHub 上的说明进行操作,所以:
- 安装 CRD
- 安装必要的角色和角色绑定
- 安装 Operator 部署 Replicaset
默认情况下,operator 将创建三个 pod,每个 pod 都自动链接到一个新的持久卷声明,该声明绑定到一个由 operator 创建的新持久卷(到目前为止一切都很好)。
但是,我希望将数据保存在特定的卷中,并安装在特定的主机路径中。因此,为了我需要创建三个持久卷,每个都安装到特定的主机路径,然后我想自动配置副本集,以便每个 pod 连接到其各自的持久卷(可能使用 matchLabels 选择器)。所以我通过应用以下文件创建了三个卷:
然后我通过以下方式设置副本集配置文件,但仍然无法将 Pod 连接到卷:
我在网上找不到任何文档,除了mongodb.com_v1_custom_volume_cr.yaml,以前有人遇到过这个问题吗?我怎样才能让它工作?
kubernetes - 如何查找和阻止所有打开的网关以进行出口呼叫
我已经安装了 k3s 并在新的命名空间中创建了一个 testpod。我想知道两件事:
curl -v https://google.com
当我做或curl -v https://github.com
从那个 testpod时,我怎么知道有多少网关为出口呼叫/传出呼叫打开?- 那么如何阻止(或路由来自)所有这些网关的流量,以便出口流量通过我将创建的通用网关?
kubernetes - 如何通过运营商网关路由出口流量
我已经在我的 ubuntu 机器上部署了egress-operator,这个操作员在内部使用envoy代理来控制出口流量。
这个想法是只允许来自 test-pod 的白名单域用于出口。我已经应用了yaml
这个运营商的外部服务,但它给出了相反的结果,而不是允许google.com
它阻止 google.com 并允许其他调用。我可能做错了什么?
我的 ExternalService.yaml
我的 testpod.yaml
从 testpod 何时curl -v https://google.com
被阻止并且允许其他 url。根据运营商的自述文件,我还需要一个默认拒绝出口 K3s 策略,因此我也应用了它。但在default-deny-Egress
政策之后,包括 google.com(列入白名单的那个)在内的所有出口呼叫都被 testpod 阻止了。
Default-Deny-All-Egress.yaml
如何路由来自 egress-operator pod 或 egress-operator 网关的出口流量?
kubernetes - Kubernetes operator 中的流量路由是如何发生的 - Journey of Egress traffic
我正在尝试了解Kubernetes-Operator中的出口流量控制。如果我在我的 k3s 设置中实现 Kubernetes 算子,出口流量在算子中是如何发生的?
我想了解在 Kubernetes 运营商(出口流量的旅程)中发生的出口流量会发生什么路径/网关和路由?