K8s控制器
Kubernetes中内建了很多Controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为;Deployment是一个功能,负责指示Kubernetes创建、更新和监控应用实例的健康状况。Deployment为Pod和ReplicaSet提供了一个声明式定义方法,用来替代以前的Replication Controller来方便的管理应用。只需要在Deployment中描述您想要的目标状态是什么,Deployment Controller就会将Pod和ReplicaSet的实际状态改变到目标状态。您可以定义一个全新的Deployment来创建ReplicaSet或者删除已有的Deployment并创建一个新的来替换。
Deployment典型的应用场景是,使用Deployment来创建ReplicaSet。ReplicaSet在后台创建Pod并检查启动状态,看它是成功还是失败。然后,通过更新Deployment的PodTemplateSpec字段来声明Pod的新状态。这会创建一个新的ReplicaSet。Deployment会按照控制的速率将pod从旧的ReplicaSet移动到新的ReplicaSet中;如果当前状态不稳定,回滚到之前的Deployment revision。每次回滚都会更新Deployment的revision。Deployment还能够完成扩容Deployment以满足更高的负载;暂停Deployment来应用PodTemplateSpec的多个修复,然后恢复上线;根据Deployment的状态判断上线是否hang住了;清除旧的不必要的ReplicaSet等功能。