Skip to content

Operator 开发

K8s 控制器的责任链

为什么 Operator 要对比 Foo.Spec 和 Deployment.Spec,而不是对比 Deployment.Spec 和 Deployment.Status?

  1. Operator(你写的控制器)
    • 职责:确保 Deployment.Spec == Foo.Spec
    • 动作:当发现两者不一致时,暴力修改 Deployment.Spec
  2. Deployment Controller(K8s 原生控制器)
    • 职责:确保 Deployment.Status == Deployment.Spec
    • 动作:自动创建/删除 Pod,直到 Pod 数量匹配 Deployment.Spec.Replicas
  3. kubelet(节点代理)
    • 职责:确保 Pod.Status == Pod.Spec
    • 动作:拉镜像、启容器、报状态