Appearance
Operator 开发
K8s 控制器的责任链
为什么 Operator 要对比 Foo.Spec 和 Deployment.Spec,而不是对比 Deployment.Spec 和 Deployment.Status?
- Operator(你写的控制器)
- 职责:确保 Deployment.Spec == Foo.Spec
- 动作:当发现两者不一致时,暴力修改 Deployment.Spec
- Deployment Controller(K8s 原生控制器)
- 职责:确保 Deployment.Status == Deployment.Spec
- 动作:自动创建/删除 Pod,直到 Pod 数量匹配 Deployment.Spec.Replicas
- kubelet(节点代理)
- 职责:确保 Pod.Status == Pod.Spec
- 动作:拉镜像、启容器、报状态