Deployment

K8s控制器

Kubernetes中内建了很多Controller(控制器,这些相当于一个状态机,用来控制Pod的具体状态和行为;Deployment是一个功能,负责指示Kubernetes创建、更新和监控应用实例的健康状况。DeploymentPodReplicaSet提供了一个声明式定义方法,用来替代以前的Replication Controller来方便的管理应用。只需要在Deployment中描述您想要的目标状态是什么,Deployment Controller就会将PodReplicaSet的实际状态改变到目标状态。您可以定义一个全新的Deployment来创建ReplicaSet或者删除已有的Deployment并创建一个新的来替换。

Deployment典型的应用场景是,使用Deployment来创建ReplicaSetReplicaSet在后台创建Pod并检查启动状态,看它是成功还是失败。然后,通过更新DeploymentPodTemplateSpec字段来声明Pod的新状态。这会创建一个新的ReplicaSetDeployment会按照控制的速率将pod从旧的ReplicaSet移动到新的ReplicaSet中;如果当前状态不稳定,回滚到之前的Deployment revision。每次回滚都会更新DeploymentrevisionDeployment还能够完成扩容Deployment以满足更高的负载;暂停Deployment来应用PodTemplateSpec的多个修复,然后恢复上线;根据Deployment的状态判断上线是否hang住了;清除旧的不必要的ReplicaSet等功能。