准备三个版本的Deployment配置文件(Apache httpd Server版本升级更新)
添加revisionHistoryLimit属性以控制kubectl apply操作历史版本的保留数量
[root@k8s-01 ~]# vi httpd-deployment.v1.yaml apiVersion: apps/v1 kind: Deployment metadata: name: httpd spec: revisionHistoryLimit: 10 replicas: 3 selector: matchLabels: run: httpd template: metadata: labels: run: httpd spec: containers: - name: httpd image: httpd:2.4.39 ports: - containerPort: 80 [root@k8s-01 ~]# vi httpd-deployment.v2.yaml apiVersion: apps/v1 kind: Deployment metadata: name: httpd spec: revisionHistoryLimit: 10 replicas: 3 selector: matchLabels: run: httpd template: metadata: labels: run: httpd spec: containers: - name: httpd image: httpd:2.4.41 ports: - containerPort: 80 [root@k8s-01 ~]# vi httpd-deployment.v3.yaml apiVersion: apps/v1 kind: Deployment metadata: name: httpd spec: revisionHistoryLimit: 10 replicas: 3 selector: matchLabels: run: httpd template: metadata: labels: run: httpd spec: containers: - name: httpd image: httpd:2.4.43 ports: - containerPort: 80
依次应用三个版本配置文件并将操作记录版本化
部署版本2.4.39
[root@k8s-01 ~]# kubectl apply -f httpd-deployment.v1.yaml --record deployment.apps/httpd created [root@k8s-01 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES httpd-5bbc9b449d-p7828 1/1 Running 0 30s 10.244.2.4 k8s-03 <none> <none> httpd-5bbc9b449d-twmv9 1/1 Running 0 30s 10.244.1.3 k8s-02 <none> <none> httpd-5bbc9b449d-zj4zn 1/1 Running 0 30s 10.244.1.2 k8s-02 <none> <none> [root@k8s-01 ~]#
查看Deployment应用版本信息(2.4.39)
[root@k8s-01 ~]# kubectl get deployments.apps -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR httpd 3/3 3 3 58s httpd httpd:2.4.39 run=httpd [root@k8s-01 ~]#
更新版本2.4.41
[root@k8s-01 ~]# kubectl apply -f httpd-deployment.v2.yaml --record deployment.apps/httpd configured [root@k8s-01 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES httpd-5bb8cdb99c-45tjk 0/1 ContainerCreating 0 8s <none> k8s-02 <none> <none> httpd-5bb8cdb99c-nz4n6 1/1 Running 0 17s 10.244.2.5 k8s-03 <none> <none> httpd-5bbc9b449d-p7828 1/1 Running 0 94s 10.244.2.4 k8s-03 <none> <none> httpd-5bbc9b449d-zj4zn 1/1 Running 0 94s 10.244.1.2 k8s-02 <none> <none> [root@k8s-01 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES httpd-5bb8cdb99c-45tjk 1/1 Running 0 24s 10.244.1.4 k8s-02 <none> <none> httpd-5bb8cdb99c-kmqxb 0/1 ContainerCreating 0 1s <none> k8s-02 <none> <none> httpd-5bb8cdb99c-nz4n6 1/1 Running 0 33s 10.244.2.5 k8s-03 <none> <none> httpd-5bbc9b449d-p7828 1/1 Running 0 110s 10.244.2.4 k8s-03 <none> <none> httpd-5bbc9b449d-zj4zn 1/1 Terminating 0 110s 10.244.1.2 k8s-02 <none> <none> [root@k8s-01 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES httpd-5bb8cdb99c-45tjk 1/1 Running 0 44s 10.244.1.4 k8s-02 <none> <none> httpd-5bb8cdb99c-kmqxb 1/1 Running 0 21s 10.244.1.5 k8s-02 <none> <none> httpd-5bb8cdb99c-nz4n6 1/1 Running 0 53s 10.244.2.5 k8s-03 <none> <none> [root@k8s-01 ~]#
查看Deployment应用版本信息(2.4.41)
[root@k8s-01 ~]# kubectl get deployments.apps -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR httpd 3/3 3 3 3m13s httpd httpd:2.4.41 run=httpd [root@k8s-01 ~]#
更新版本2.4.43
[root@k8s-01 ~]# kubectl apply -f httpd-deployment.v3.yaml --record deployment.apps/httpd configured [root@k8s-01 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES httpd-7c68f97dc5-8vwxx 1/1 Running 0 3m26s 10.244.2.6 k8s-03 <none> <none> httpd-7c68f97dc5-fn6ql 1/1 Running 0 2m55s 10.244.1.7 k8s-02 <none> <none> httpd-7c68f97dc5-s7mwv 1/1 Running 0 3m17s 10.244.1.6 k8s-02 <none> <none> [root@k8s-01 ~]#
查看Deployment应用版本信息(2.4.43)
[root@k8s-01 ~]# kubectl get deployments.apps -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR httpd 3/3 3 3 5m httpd httpd:2.4.43 run=httpd [root@k8s-01 ~]#
查看deployment的kubectl apply操作历史版本信息
[root@k8s-01 ~]# kubectl rollout history deployment httpd deployment.apps/httpd REVISION CHANGE-CAUSE 1 kubectl apply --filename=httpd-deployment.v1.yaml --record=true 2 kubectl apply --filename=httpd-deployment.v2.yaml --record=true 3 kubectl apply --filename=httpd-deployment.v3.yaml --record=true [root@k8s-01 ~]#
回滚到指定版本(上一个版本)
[root@k8s-01 ~]# kubectl rollout undo deployment httpd --to-revision=2 deployment.apps/httpd rolled back [root@k8s-01 ~]#
查看历史版本信息
[root@k8s-01 ~]# kubectl rollout history deployment httpd deployment.apps/httpd REVISION CHANGE-CAUSE 1 kubectl apply --filename=httpd-deployment.v1.yaml --record=true 3 kubectl apply --filename=httpd-deployment.v3.yaml --record=true 4 kubectl apply --filename=httpd-deployment.v2.yaml --record=true [root@k8s-01 ~]#
查看当前Deployment应用版本信息
[root@k8s-01 ~]# kubectl get deployments.apps -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR httpd 3/3 3 3 9m httpd httpd:2.4.41 run=httpd [root@k8s-01 ~]#