0

我正在尝试实现我的第一个 Kubernetes 运算符。我希望操作员控制器能够将正在运行的 pod 中的配置与自定义资源定义中定义的预期配置进行比较。

例如:自定义资源

apiVersion: test.com/v1alpha1
kind: TEST
metadata::
  name: example-test
spec:
  replicas: 3
  version: 20:03
  config:
    valueA: true
    valueB: 123

上面的自定义资源已部署,3 个 pod 正在运行。进行了更改,以使配置“valueA”更改为 false。

在 GO 控制器协调功能中,我可以获取 TEST 实例并查看配置的“新”版本:

instance := &testv1alpha1.TEST{}
log.Info("New value : " + instance.Spec.Config.valueA)

我想知道如何访问正在运行的 Pod 中的“valueA”的值,以便我可以比较和重新创建 Pod(如果它已更改)?

还有一个次要问题,我是否需要遍历 reconcile 函数中所有正在运行的 pod 来检查每个 pod,或者我可以将其作为单个操作执行吗?

4

1 回答 1

1

这个配置到底是什么?如果是 Pod 的规范配置,我建议您更新的不是单个 Pod,而是 Deployment 中的规范,它会自动重新启动它的 Pod。如果它是这个 pod 中应用程序的环境变量,我建议使用ConfigMap 来存储它们并更新它。回答你的第二个问题,在这两种情况下——这将是一个单一的操作。

要获得 Deployment 或 ConfigMap,您需要拥有它的名称和命名空间,通常,对于自定义资源,它应该从它的名称派生而来。这是如何获取部署实例并对其进行更新的示例。

于 2020-04-08T07:25:18.003 回答