所有的控制都遵循k8s的control loop

  1. for {
  2. 实际状态 := 获取集群中对象 X 的实际状态(Actual State
  3. ##来自kubelet通过心跳汇报/监控系统保存的应用监控数据/控制器主动收集
  4. 期望状态 := 获取集群中对象 X 的期望状态(Desired State
  5. ##来自yaml文件定义
  6. if 实际状态 == 期望状态{
  7. ##k8s对象主要的编排逻辑,reconcile/sync loop
  8. 什么都不做
  9. } else {
  10. 执行编排动作,将实际状态调整为期望状态
  11. }
  12. }

image.png

Deployment

Deployment控制器实际控制的是ReplicaSet的数量及属性,一个应用的版本对应一个ReplicaSet,该版本pod的数量由ReplicaSet自身的控制器(ReplicaSet Controller)来保证。
image.png