上篇文章介绍了在RC中的滚动升级,这篇继续介绍RC中回滚的方式。
RC滚动升级
可参看如下内容:https://liumiaocn.blog.csdn.net/article/details/104205298
回滚:rollback
回滚使用如下命令即可:
执行命令:kubectl rolling-update busybox-rc -f v2.yaml --rollback
- 注意事项:回滚的是正在执行的滚动升级
非执行中的话则会提示类似如下的错误信息:
[root@host131 RollingUpdate]# kubectl rolling-update busybox-rc busybox-rc-v2 --rollback
Command "rolling-update" is deprecated, use "rollout" instead
Error from server (NotFound): replicationcontrollers "busybox-rc" not found
[root@host131 RollingUpdate]#
事前准备
[root@host131 RollingUpdate]# kubectl create -f v1.yaml
replicationcontroller/busybox-rc-v1 created
[root@host131 RollingUpdate]#
[root@host131 RollingUpdate]# kubectl get rc -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
busybox-rc-v1 3 3 3 9s busybox-host busybox:latest app=busybox-v1
[root@host131 RollingUpdate]#
[root@host131 RollingUpdate]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox-rc-v1-dvlsw 1/1 Running 0 17s 10.254.152.7 192.168.163.131 <none> <none>
busybox-rc-v1-khc8t 1/1 Running 0 17s 10.254.152.10 192.168.163.131 <none> <none>
busybox-rc-v1-wd8rk 1/1 Running 0 17s 10.254.152.6 192.168.163.131 <none> <none>
[root@host131 RollingUpdate]#
[root@host131 RollingUpdate]# kubectl exec -it busybox-rc-v1-dvlsw sh
/ # ps -ef
PID USER TIME COMMAND
1 root 0:00 sleep 1000
6 root 0:00 sh
11 root 0:00 ps -ef
/ #
执行滚动升级
[root@host131 RollingUpdate]# kubectl rolling-update busybox-rc-v1 -f v2.yaml
Command "rolling-update" is deprecated, use "rollout" instead
Created busybox-rc-v2
Scaling up busybox-rc-v2 from 0 to 3, scaling down busybox-rc-v1 from 3 to 0 (keep 3 pods available, don't exceed 4 pods)
Scaling busybox-rc-v2 up to 1
在上述执行的过程中,执行回滚操作,日志如下所示:
[root@host131 RollingUpdate]# kubectl rolling-update busybox-rc-v1 busybox-rc-v2 --rollback
Command "rolling-update" is deprecated, use "rollout" instead
Setting "busybox-rc-v1" replicas to 3
Continuing update with existing controller busybox-rc-v1.
Scaling up busybox-rc-v1 from 3 to 3, scaling down busybox-rc-v2 from 1 to 0 (keep 3 pods available, don't exceed 4 pods)
从提示中可以看到,希望做的事情是对的,将已经启动的busybox-rc-v2的Pod实例从1降到0,确认此时RC状态
[root@host131 test]# kubectl get rc -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
busybox-rc-v1 3 3 3 2m36s busybox-host busybox:latest app=busybox-v1
busybox-rc-v2 1 1 1 32s busybox-host busybox:latest app=busybox-v2
[root@host131 test]#
之后滚动升级窗口最终日志如下所示:
[root@host131 RollingUpdate]# kubectl rolling-update busybox-rc-v1 -f v2.yaml
Command "rolling-update" is deprecated, use "rollout" instead
Created busybox-rc-v2
Scaling up busybox-rc-v2 from 0 to 3, scaling down busybox-rc-v1 from 3 to 0 (keep 3 pods available, don't exceed 4 pods)
Scaling busybox-rc-v2 up to 1
Scaling busybox-rc-v1 down to 2
Scaling busybox-rc-v2 up to 2
Scaling busybox-rc-v1 down to 1
Scaling busybox-rc-v2 up to 3
Scaling busybox-rc-v1 down to 0
Update succeeded. Deleting old controller: busybox-rc-v1
Renaming busybox-rc-v2 to busybox-rc-v1
replicationcontroller/busybox-rc-v1 rolling updated
[root@host131 RollingUpdate]#
可以看到滚动升级成功执行,但滚动升级的回滚没有成功,这并不是期待的结果
[root@host131 RollingUpdate]# kubectl rolling-update busybox-rc-v1 busybox-rc-v2 --rollback
Command "rolling-update" is deprecated, use "rollout" instead
Setting "busybox-rc-v1" replicas to 3
Continuing update with existing controller busybox-rc-v1.
Scaling up busybox-rc-v1 from 3 to 3, scaling down busybox-rc-v2 from 1 to 0 (keep 3 pods available, don't exceed 4 pods)
error: timed out waiting for any update progress to be made
[root@host131 RollingUpdate]#
而且确认Pod状况,验证了Pod已经成功滚动,回滚并未发生
[root@host131 test]# kubectl get rc -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
busybox-rc-v1 3 3 3 2m busybox-host busybox:latest app=busybox-v2
[root@host131 test]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox-rc-v2-cjp8n 1/1 Running 0 3m34s 10.254.152.6 192.168.163.131 <none> <none>
busybox-rc-v2-dvvxd 1/1 Running 0 4m40s 10.254.152.8 192.168.163.131 <none> <none>
busybox-rc-v2-lxwg5 1/1 Running 0 5m46s 10.254.152.5 192.168.163.131 <none> <none>
[root@host131 test]# kubectl exec -it busybox-rc-v2-cjp8n sh
/ # ps -ef
PID USER TIME COMMAND
1 root 0:00 sleep 10000
6 root 0:00 sh
11 root 0:00 ps -ef
/ #
由于RC已经是一个过时很久的功能,此处主要是用于记录一下这种执行方式,回滚功能的验证会在后续Deployment进行详细的说明。
使用的YAML文件
[root@host131 RollingUpdate]# cat v1.yaml
---
apiVersion: v1
kind: ReplicationController
metadata:
name: busybox-rc-v1
spec:
replicas: 3
selector:
app: busybox-v1
template:
metadata:
labels:
app: busybox-v1
spec:
containers:
- name: busybox-host
image: busybox:latest
command: ["sleep"]
args: ["1000"]
...
[root@host131 RollingUpdate]# cat v2.yaml
---
apiVersion: v1
kind: ReplicationController
metadata:
name: busybox-rc-v2
spec:
replicas: 3
selector:
app: busybox-v2
template:
metadata:
labels:
app: busybox-v2
spec:
containers:
- name: busybox-host
image: busybox:latest
command: ["sleep"]
args: ["10000"]
...
[root@host131 RollingUpdate]#
参考内容
https://v1-14.docs.kubernetes.io/docs/reference/kubectl/cheatsheet/