我正在尝试实现我的第一个Kubernetes运算符。我希望操作员控制器能够将正在运行的pod中的配置与自定义资源定义中定义的预期配置进行比较。
例如:自定义资源
apiVersion: test.com/v1alpha1
kind: TEST
metadata::
name: example-test
spec:
replicas: 3
version: 20:03
config:
valueA: true
valueB: 123上述自定义资源部署完成,3个pods正在运行。进行更改,使得配置"valueA“被更改为false。
在GO控制器协调函数中,我可以获得测试实例并查看配置的“新”版本:
instance := &testv1alpha1.TEST{}
log.Info("New value : " + instance.Spec.Config.valueA)我想知道如何访问我运行的pod中"valueA“的值,以便我可以比较和重新创建pod,如果它发生了变化?
另一个次要问题是,我是否需要遍历协调函数中所有正在运行的pod来检查每个pod,或者我是否可以将其作为单个操作来完成?
发布于 2020-04-08 15:25:18
这个配置到底是什么?如果是Pod的规范配置,我建议你不要更新单个Pod,而是更新部署中的规范,它会自动重新启动它的Pod。如果这个pod中的应用程序是环境变量,我建议使用ConfigMap来存储它们,并更新它们。回答您的第二个问题,在这两种情况下--这将是一个单一的操作。
要获得部署或ConfigMap,你需要有它的名称和命名空间,通常,对于自定义资源,它应该从它的名称派生出来。Here is example如何获取部署实例并更新它。
https://stackoverflow.com/questions/61094417
复制相似问题