K8S的滚动更新(六)

2019-12-03  本文已影响0人  运维之美

前言

K8S的滚动更新功能,一次可以更新部分副本,启动一部分pod,停止一部分pod,最后完成所有副本的更新,在升级的过程中,能够保证服务一直在线,达到零停机,保障了业务的稳定性。

1.准备yaml文件

如下httpd2_v1.ymal,httpd2_v2.ymal,httpd2_v3.ymal三个配置文件,分别对应httpd镜像2.4.16,2.4.17,2.4.18
httpd2_v1.ymal

kind: Deployment

metadata:

  name: httpd

spec:

  revisionHistoryLimit: 10

  replicas: 2

  template:

    metadata:

      labels:

        run: httpd

    spec:

      containers:

      - name: httpd

        image: httpd:2.4.16

        ports:

        - containerPort: 80

httpd2_v2.ymal配置文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: httpd
spec:
   revisionHistoryLimit: 10
   replicas: 2
   template:
     metadata:
       labels:
         run: httpd
     spec:
       containers:
       - name: httpd
         image: httpd:2.4.17
         ports:
         - containerPort: 80

httpd2_v3.ymal

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: httpd
spec:
   revisionHistoryLimit: 10
   replicas: 2
   template:
     metadata:
       labels:
         run: httpd
     spec:
       containers:
       - name: httpd
         image: httpd:2.4.18
         ports:
         - containerPort: 80

2.版本更新

分别执行如下命令--record的作用是将当前版本记录到revisionHistory中去,然后我们根据revision历史记录可以去进行版本回滚
kubectl apply -f httpd2_v1.ymal --record
kubectl get replicaset -o wide
kubectl apply -f httpd2_v2.ymal --record
kubectl get replicaset -o wide
kubectl apply -f httpd2_v3.ymal --record
kubectl get replicaset -o wide


image.png

kubectl rollout history deployment httpd -----查看历史版本


image.png
如图REVISION显示的记录id,CHANGE-CAUSE显示的是版本更新的命令

3.版本回滚

kubectl rollout undo deployment httpd --to-revision=1 ----回滚到记录为1的版本,也就是http的2.4.16版本


image.png

再次查看版本记录,也会相应的发生变动


image.png
注:使用版本更新和回滚功能,在kubectl apply时需要加--record参数。
上一篇 下一篇

猜你喜欢

热点阅读