0
点赞
收藏
分享

微信扫一扫

每天5分钟玩转Kubernetes | Rolling Update回滚

书籍来源:cloudman《每天5分钟玩转Kubernetes》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

kubectl 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,如下所示。

[root@k8s-master ~]# cat httpd.v1.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd
spec:
replicas: 3
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: httpd:2.4.16
ports:
- containerPort: 80
[root@k8s-master ~]# cat httpd.v2.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd
spec:
replicas: 3
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: httpd:2.4.17
ports:
- containerPort: 80
[root@k8s-master ~]# cat httpd.v3.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd
spec:
replicas: 3
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: httpd:2.4.18
ports:
- containerPort: 80
[root@k8s-master ~]#

通过kubectl apply部署并更新应用,如图所示。

每天5分钟玩转Kubernetes | Rolling Update回滚_回滚

--record的作用是将当前命令记录到revision记录中,这样我们就可以知道每个revison对应的是哪个配置文件了。通过kubectl rollout history deployment httpd查看revison历史记录,如图所示。

每天5分钟玩转Kubernetes | Rolling Update回滚_回滚_02

CHANGE-CAUSE就是--record的结果。如果要回滚到某个版本,比如revision 1,可以执行命令kubectl rollout undo deployment httpd --to-revision=1,如图所示。

每天5分钟玩转Kubernetes | Rolling Update回滚_回滚_03

此时,revison历史记录也会发生相应变化,如图所示。

每天5分钟玩转Kubernetes | Rolling Update回滚_历史记录_04

revison 1变成了revison 4。不过我们可以通过CHANGE-CAUSE知道每个revison的具体含义,所以一定要在执行kubectl apply时加上--record参数。

举报

相关推荐

0 条评论