kubernetes - 使用运算符创建具有空环境变量的子 Pod 会导致无限循环
问题描述
我有一个元控制器(操作员)。它使用自定义 CRD。当它收到sync
调用时,它会创建几个子资源:
- 荚
- 服务帐户
- 角色
- 角色绑定
pod 是使用有效图像创建的。在它的环境变量中,有一个设置了一个空字符串。
{ "name": "PARTITIONS", "value": "" }
这将返回到元控制器。元控制器开始创建子对象。
然后它注意到由于PARTITIONS
变量,观察到的状态和实际状态之间存在差异。
I0611 00:45:24.908380 1 manage_children.go:210] reflect diff: a=observed, b=desired:
object[spec][containers][0][env][11][value]:
a: <nil>
b: ""
因此,它会杀死启动的 pod,并再次向我的端点发送同步请求。
这会导致无限循环,因为我的端点查看 request.children,发现 pod 丢失,添加一个新 pod 并返回。过了一会儿,它又被删除了,无穷无尽。
这是 Metacontroller 中的错误吗?
解决方案
在metacontroller
项目中确认这是它如何序列化空字符串以比较差异的错误。
推荐阅读
- laravel - 如何从关系中删除项目
- spring - 如何更新spring mongodb中的嵌入对象
- css - Vuetify:自定义样式中断分页
- django - 如何在 django 中永久更改主文件夹名称
- python - 使用 pathlib 模块关闭文件的推荐方法?
- java - CompletableFuture VS @Async
- mysql - docker 无法访问 mysql
- python - python警告说“名称“X”可以未定义”
- inno-setup - Inno Setup - 将 AppVersion 设置为 DefaultDirName
- angular - Angular 8:在不关闭对话框的情况下更新对话框数据和父数据后,如何将更新的父数据传递给 Mat Dialog?