Kubernetes权威指南二——Pod的扩缩容
一、Pod的升级和回滚
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx33 replicas: 3 template: metadata: labels: app: nginx33 spec: containers: - name: nginx33 image: nginx:1.7.9 ports: - containerPort: 80
第一种升级的方法: set image
[root@master01 roll]# kubectl set image deployment/nginx-deployment nginx33=nginx:1.9.1 deployment.apps/nginx-deployment image updated
第二种方法: edit
[root@master01 roll]# kubectl edit deployment/nginx-deployment
deployment.apps/nginx-deployment edited
查看更新状态:
[root@master01 roll]# kubectl rollout status deployment/nginx-deployment deployment "nginx-deployment" successfully rolled out
Deployment更新Pod的过程:
开始创建Deployment的时候,系统创建了一个ReplicaSet,并按需求创建了3个Pod副本,更新Deployment的时候,系统创建了一个新的ReplicaSet,将旧的ReplicaSet缩减为2,之后对两个旧的一次缩减,最后成为0,

二、 Deployment回滚
回滚到稳定版本之前,首先,用kubectl rollout history 命令检查这个Deployment部署的历史记录
[root@master01 roll]# kubectl rollout history deployment/nginx-deployment deployment.apps/nginx-deployment REVISION CHANGE-CAUSE 1 <none> 3 <none> 4 <none>
在创建Deployment时候使用 --record参数,就可以在CHANGE-CAUSE列看到每个版本使用的命令了。
[root@master01 roll]# kubectl rollout history deployment/nginx-deployment --revision=3 deployment.apps/nginx-deployment with revision #3 Pod Template: Labels: app=nginx33 pod-template-hash=67d9cdc5f5 Containers: nginx33: Image: nginx:1.7.1 Port: 80/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none>
回滚到上一个版本:
[root@master01 roll]# kubectl rollout undo deployment/nginx-deployment
deployment.apps/nginx-deployment rolled back
回滚到指定的版本:
[root@master01 roll]# kubectl rollout undo deployment/nginx-deployment --to-revision=4 deployment.apps/nginx-deployment rolled back
三、Pod的扩缩容
3.1手动缩容
[root@master01 roll]# kubectl scale deployment nginx-deployment --replicas 5 deployment.apps/nginx-deployment scaled
3.2自动扩缩容机制
HPA (Horizontal Pod Autoscaler)
浙公网安备 33010602011771号