更新
** 7.1 practice
evan@k8s-master:~$ kubectl get deployment httpd -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 2/3 3 2 68s httpd httpd:2.2.31 run=httpd
evan@k8s-master:~$ kubectl get pod
\NAME READY STATUS RESTARTS AGE
httpd-5ddb558f47-2pmhw 1/1 Running 0 78s
httpd-5ddb558f47-rwbhc 1/1 Running 0 78s
httpd-5ddb558f47-xtfb2 0/1 ImagePullBackOff 0 78s
evan@k8s-master:~$ kubectl get pod
NAME READY STATUS RESTARTS AGE
httpd-5ddb558f47-2pmhw 1/1 Running 0 12m
httpd-5ddb558f47-rwbhc 1/1 Running 0 12m
httpd-5ddb558f47-xtfb2 1/1 Running 0 12m
evan@k8s-master:~$ kubectl get deployment httpd -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 3/3 3 3 12m httpd httpd:2.2.31 run=httpd
evan@k8s-master:~$ kubectl get replicaset -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
httpd-5ddb558f47 3 3 3 13m httpd httpd:2.2.31 pod-template-hash=5ddb558f47,run=httpd
将配置文件中 httpd:2.2.31 替换为 httpd:2.2.32,再次执行 kubectl apply
---- ------ ---- ---- -------
Normal ScalingReplicaSet 16m deployment-controller Scaled up replica set httpd-5ddb558f47 to 3
Normal ScalingReplicaSet 99s deployment-controller Scaled up replica set httpd-8bdffc6d8 to 1
Normal ScalingReplicaSet 99s deployment-controller Scaled down replica set httpd-5ddb558f47 to 2
Normal ScalingReplicaSet 98s deployment-controller Scaled up replica set httpd-8bdffc6d8 to 2
Normal ScalingReplicaSet 6s deployment-controller Scaled down replica set httpd-5ddb558f47 to 1
Normal ScalingReplicaSet 6s deployment-controller Scaled up replica set httpd-8bdffc6d8 to 3
---- ------ ---- ---- -------
Normal ScalingReplicaSet 16m deployment-controller Scaled up replica set httpd-5ddb558f47 to 3
Normal ScalingReplicaSet 99s deployment-controller Scaled up replica set httpd-8bdffc6d8 to 1
Normal ScalingReplicaSet 99s deployment-controller Scaled down replica set httpd-5ddb558f47 to 2
Normal ScalingReplicaSet 98s deployment-controller Scaled up replica set httpd-8bdffc6d8 to 2
Normal ScalingReplicaSet 6s deployment-controller Scaled down replica set httpd-5ddb558f47 to 1
Normal ScalingReplicaSet 6s deployment-controller Scaled up replica set httpd-8bdffc6d8 to 3
回滚
** 7.2 回滚
ubectl apply 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision。
默认配置下,Kubernetes 只会保留最近的几个 revision,可以在 Deployment 配置文件中通过 revisionHistoryLimit 属性增加 revision 数量。
下面实践回滚功能。应用有如下三个配置文件 httpd.v1.yml,httpd.v2.yml 和 httpd.v3.yml,分别对应不同的 httpd 镜像 2.4.16,2.4.17 和 2.4.18:
evan@k8s-master:~$ kubectl apply -f httpd.v1.yml --record
deployment.extensions/httpd created
evan@k8s-master:~$ kubectl get deployment httpd -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 0/3 3 0 3s httpd httpd:2.4.16 run=httpd
evan@k8s-master:~$ kubectl apply -f httpd.v2.yml --record
deployment.extensions/httpd configured
evan@k8s-master:~$ kubectl get deployment httpd -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 0/3 2 0 30s httpd httpd:2.4.18 run=httpd
evan@k8s-master:~$ kubectl apply -f httpd.v3.yml --record
deployment.extensions/httpd configured
evan@k8s-master:~$ kubectl get deployment httpd -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 0/3 2 0 39s httpd httpd:2.4.18 run=httpd
--record 的作用是将当前命令记录到 revision 记录中,这样我们就可以知道每个 revison 对应的是哪个配置文件。通过 kubectl rollout history deployment httpd 查看 revison 历史记录
evan@k8s-master:~$ kubectl rollout history deployment httpd
deployment.extensions/httpd
REVISION CHANGE-CAUSE
1 kubectl apply --filename=httpd.v1.yml --record=true
2 kubectl apply --filename=httpd.v3.yml --record=true
3 kubectl apply --filename=httpd.v2.yml --record=true
evan@k8s-master:~$ kubectl get deployment httpd -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 2/3 2 2 3m9s httpd httpd:2.4.17 run=httpd
evan@k8s-master:~$ kubectl rollout undo deployment httpd --to-revision=1
deployment.extensions/httpd rolled back
evan@k8s-master:~$ kubectl get deployment httpd -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 2/3 3 2 3m36s httpd httpd:2.4.16 run=httpd
evan@k8s-master:~$ kubectl rollout history deployment httpd
deployment.extensions/httpd
REVISION CHANGE-CAUSE
2 kubectl apply --filename=httpd.v3.yml --record=true
3 kubectl apply --filename=httpd.v2.yml --record=true
4 kubectl apply --filename=httpd.v1.yml --record=true
see also
https://www.cnblogs.com/CloudMan6/p/8543006.html
https://www.cnblogs.com/CloudMan6/p/8553331.html