kubernetes - Metacontroller:如何停止调用同步钩子和资源生成
问题描述
我正在使用Metacontroller来实现 Kubernetes 运算符。
我的问题如下:
- Metacontroller 永远不会停止为我的控制器调用我的同步钩子(在这种情况下是复合控制器),并且
- 父资源
status.observedGeneration
字段不断更新(据我了解,这意味着资源已重新创建)。
复合控制器文档(特别是响应文档)建议,如果返回的父状态或子集合没有变化,元控制器应该停止调用同步钩子。
我还从复合控制器清单中删除了spec.resyncPeriodSeconds
和spec.parentResource.revisionHistory
(由于计时器事件或对父status
字段的更改,不会触发对同步挂钩的任何调用)。
可悲的是,这些都不起作用。如何告诉 Metacontroller 停止调用同步挂钩并停止创建资源?
解决方案
您可能需要为您的 CRD 启用“状态”子资源:https ://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#status-subresource
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: myresource
spec:
...
subresources:
status: {}
没有它,Metacontroller 会将状态更新视为正常的资源更新,这反过来会创建一个新的.metadata.resourceVersion
/.metadata.generation
因为 Metacontroller 总是添加一个更新的.status.observedGeneration
字段。
我为此创建了一个问题:https ://github.com/GoogleCloudPlatform/metacontroller/issues/176
希望这将使这种情况在未来更加明显。
推荐阅读
- javascript - 处理 fetch/axios/debounce 项目
- sql - 使用缓冲区和变换投影,PostGIS
- python-3.x - 如何使用 pytest.ini 或 yaml 将 pytest 日志记录的默认日志文件夹更改为自定义
- python - 打印时如何删除列表字符之间的空格?
- python - numpy.AxisError:轴 1 超出维度 1 数组的范围 - numpy 数组
- javascript - 奇怪的执行顺序反应
- c - C 程序。将字符串输入到 char 指针问题
- r - 使用自定义编织函数并评估列表中的引用函数时,Knitr 无法从前一个块中找到函数
- c# - IronPython 未处理的异常
- r - 无法通过 R 中的锯齿对数据执行贝叶斯分析