EchisanBlog
k8s控制器

控制器

k8s中内建了很多controller,相当于一个状态机,用来控制pod的具体状态和行为

Deployment

为Pod和ReplicaSet提供一个声明式定义方法,用于替代以前的ReplicationController。

典型使用场景

  • 定义Deployment来创建pod和ReplicaSet
  • 滚动升级和回滚应用
  • 扩容和缩容
  • 暂停和继续deployment

kubectl操作
扩容

kubectl scale deployment nginx-deployment --replicas 10

如果集群支持自动扩容

kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu=percent=80

更新镜像

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

回滚

kubectl rollout undo deployment/nginx-deployment

指定版本

kubectl rollout undo deployment/nginx-deployment --to-revision=2

Deployment结构示意图
https://jimmysong.io/kubernetes-handbook/images/deployment-cheatsheet.png

查看deployment升级的历史记录

kubectl rollout history deployment/nginx-deployment

创建 Deployment的时候使用–record参数可以记录命令,可以很方便的查看每次 revision 的变化。

查看单个revision 的详细信息:

kubectl rollout history deployment/nginx-deployment --revision=2