问题标签 [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 回答
64 浏览

kubernetes - 如何将基于 ansible 的 Kubernetes 操作员部署的日志详细程度从 INFO 减少到 WARN 或 ERROR

我写了一个基于 ansible 的 kubernetes 运算符,我试图找出一种方法来通过降低日志详细级别来减少运算符部署 pod 生成的日志。

kubectl 记录 netqedge-7f8885fb85-5jk9c

netqedge 是基于 ansible 的运算符

操作员日志

0 投票
1 回答
220 浏览

kubernetes - 确定 Kubernetes 中 Airflow 的服务帐户

我在 Kubernetes 一个 pod、2 个容器 - 网络服务器和调度程序中运行 Airflow。配置中的 KubernetesExecutor

但是由于组织设置,默认服务帐户的调度程序无法工作,没有足够的角色。我无法更改此设置

所以我创建了需要的服务帐户rolesroleBinging。如何设置 Airflow 以使用该 SA 运行调度程序?

0 投票
1 回答
133 浏览

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的澄清。

0 投票
1 回答
115 浏览

kubernetes - 一个 Kubernetes 集群可以处理多少个 CR(自定义资源)?

  1. 一个 k8s 集群可以处理多少个 CRD 的 CR?
  2. 某个控制器(或操作员)可以协调多少个 CR?

谢谢!

0 投票
1 回答
45 浏览

kubernetes - 使用运算符创建具有空环境变量的子 Pod 会导致无限循环

我有一个元控制器(操作员)。它使用自定义 CRD。当它收到sync调用时,它会创建几个子资源:

  • 服务帐户
  • 角色
  • 角色绑定

pod 是使用有效图像创建的。在它的环境变量中,有一个设置了一个空字符串。

{ "name": "PARTITIONS", "value": "" }

这将返回到元控制器。元控制器开始创建子对象。

然后它注意到由于PARTITIONS变量,观察到的状态和实际状态之间存在差异。

因此,它会杀死启动的 pod,并再次向我的端点发送同步请求。

这会导致无限循环,因为我的端点查看 request.children,发现 pod 丢失,添加一个新 pod 并返回。过了一会儿,它又被删除了,无穷无尽。

这是 Metacontroller 中的错误吗?

0 投票
2 回答
918 浏览

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

0 投票
1 回答
355 浏览

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,以前有人遇到过这个问题吗?我怎样才能让它工作?

0 投票
1 回答
34 浏览

kubernetes - 如何查找和阻止所有打开的网关以进行出口呼叫

我已经安装了 k3s 并在新的命名空间中创建了一个 testpod。我想知道两件事:

  1. curl -v https://google.com当我做或 curl -v https://github.com从那个 testpod时,我怎么知道有多少网关为出口呼叫/传出呼叫打开?
  2. 那么如何阻止(或路由来自)所有这些网关的流量,以便出口流量通过我将创建的通用网关?
0 投票
1 回答
136 浏览

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 网关的出口流量?

0 投票
1 回答
81 浏览

kubernetes - Kubernetes operator 中的流量路由是如何发生的 - Journey of Egress traffic

我正在尝试了解Kubernetes-Operator中的出口流量控制。如果我在我的 k3s 设置中实现 Kubernetes 算子,出口流量在算子中是如何发生的?

我想了解在 Kubernetes 运营商(出口流量的旅程)中发生的出口流量会发生什么路径/网关和路由?