RS和Deployment
Deployment
Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。电影的应用场景包括:
定义Deployment来创建Pod和ReplicaSet
滚动升级和回滚应用
扩容和缩容
暂停和继续Deployment
I、部署一个简单的Nginx应用
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
kubectl apply -f deployment-nginx.yaml --record
Ⅱ、扩容
kubectl scale deployment nginx-deployment --replicas 10
Ⅲ、如果集群支持horizontal pod autoscaling的话,还可以为Deployment设置自动扩展
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80
Ⅳ、更新镜像也比较简单
Kubectl set image deployment nginx-deployment myapp=nginx:1.9.1
Ⅴ、回滚
kubectl rollout undo deployment/nginx-deployment
Deployment更新策略
Deployment可以保证在升级时只有一定数量的Pod是down的。默认的,它会确保至少有比期望的Pod数量少一个是up状态(最多一个不可用)
Deployment同时也可以确保只创建出超出期望数量的一定数量的Pod。默认的,它会确保最多比期望的Pod数量多一个的Pod是Up的(最多一个surge)
未来的k8s版本中,将从1-1变成25%~25%
kubectl describe deployments
Rollover(多个rollout并行)
假如您创建了一个有5个nginx:1.7.9 replica的Deployment,但是当还只有3个nginx:1.7.9的replica创建出来的时候您就开始更新含有5个nginx:1.9.1 replica的Deployment。在这种情况下,Deployment会立即杀掉已创建的3个nginx:1.7.9 的Pod,并开始创建nginx:1.9.1的Pod。它不会等到所有的5个nginx:1.7.9的Pod都创建完后才开始更新
回退Deployment
只要Deployment的rollout被触发就会创建一个revision。也就是说当且仅当Deployment的Pod template(如‘.spec.template’)被更改,例如更新template中的label和容器镜像时,就会创建出一个新的revision。其他的更新,比如扩容Deployment不会创建revision,因此我们可以很方便的手动或者自动扩容。这意味着当您回头到历史revision时,只有Deployment中的Pod template部分才会回退
kubectl rollout status deployment/nginx-deployment
kubectl rollout history deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment --to-revision=版本 //可以使用--revision参数值指定某个历史版本
kubectl rollout pause deployment/nginx-deployment //暂停deployment的更新
您可以用kubectl rollout status命令查看Deployment是否完成。如果rollout成功完成,kubectl rollout status将返回一个0值的Exit Code
kubectl rollout status deployment/nginx-deployment
echo $?
清理Policy
您可以通过设置.spec.revisonHistoryLimit项来指定deployment最多保留多少revision历史记录。默认的会保留所有的revision;如果将该项设置为0,Deployment就不允许回退了。
浙公网安备 33010602011771号