iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
DevOps

從開源雲到邊緣運算系列 第 11

[Day 11]KubeEdge 部屬 - 滾動更新(RollingUpdate)/回復舊版(RollBack)

  • 分享至 

  • xImage
  •  

為了方便管理服務的版本,Kubernetes提供了滾動更新(RollingUpdate)和回復舊版(RollBack)的功能,以更新 Container Image 版本為更新要點,透過 kubenetes 上 apply、edit、set-image 的功能進行服務更新,並藉由 record 進行指令紀錄 (版本號),提供後續滾動更新、滾動回復版本使用,滾動更新狀態紀錄使用 rollout history 進行檢視。


建立滾動更新 Deployment

  1. 撰寫服務 yaml 檔案nginx.yaml
    • 使用 strategy 中 Type 設置 Rolling Update
    • maxSurge = 更新狀況下新增 N 個 Pod 協助更新,同時新增 N Pod / 刪除 N Pod,最多 ReplicaSet + N Pod
    • maxUnavailable = 最多允需 N 個 Pod 無法服務
    • minReadySeconds = 容器啟動後等待服務啟動時間(秒)
    • revisionHistoryLimit = 歷史紀錄最多更新版本保留次數
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: RollingUpdate
    rollingUpdate:
       maxSurge: 1
       maxUnavailable: 1
  minReadySeconds: 10
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
          hostPort: 80
  1. 派送 yaml 檔案 與 建立修改紀錄
kubectl create -f nginx.yaml --record
  1. 觀看 yaml檔 派送服務狀態
kubectl get deployment nginx -o wide

滾動更新 (apply command)

  1. 更新服務 yaml 檔案nginx.yaml

    • 修改 Image 版本
      https://ithelp.ithome.com.tw/upload/images/20190925/201210712cP0RFHAsz.png
  2. 派送修改後 yaml 檔案

kubectl apply -f nginx.yaml --record

https://ithelp.ithome.com.tw/upload/images/20190925/20121071QIMm2grDaK.png

  1. 觀看 滾動更新 Pod 服務變動狀態
kubectl rollout status deployment nginx

https://ithelp.ithome.com.tw/upload/images/20190925/201210711sPadD7vt4.png

  1. 觀看 更新後 服務狀態
 kubectl get deployment nginx -o wide

https://ithelp.ithome.com.tw/upload/images/20190925/20121071J9iLrOkvxY.png

滾動更新 (set-image command)

  1. 設定指定的 Deployment 與 image版本
kubectl set image deployment nginx nginx=nginx:1.11.5 --record

https://ithelp.ithome.com.tw/upload/images/20190925/20121071yVUY2PRhUl.png

  1. 觀看 滾動更新 Pod 服務變動狀態
kubectl rollout status deployment nginx

https://ithelp.ithome.com.tw/upload/images/20190925/201210711sPadD7vt4.png

  1. 觀看 更新後 服務狀態
 kubectl get deployment nginx -o wide

https://ithelp.ithome.com.tw/upload/images/20190925/20121071hLLEDk7Jxr.png

滾動更新 (replace command)

  1. 更新服務 yaml 檔案

    • 修改 Image 版本
      https://ithelp.ithome.com.tw/upload/images/20190925/20121071ItHpt8Z3iy.png
  2. 派送修改後 yaml 檔案

kubectl replace -f nginx.yaml

https://ithelp.ithome.com.tw/upload/images/20190925/20121071NpHoJ44hhb.png

  1. 觀看 滾動更新 Pod 服務變動狀態
kubectl rollout status deployment nginx

https://ithelp.ithome.com.tw/upload/images/20190925/201210711sPadD7vt4.png

  1. 觀看 更新後 服務狀態
kubectl get deployment nginx -o wide

https://ithelp.ithome.com.tw/upload/images/20190925/20121071mV3ik1Pp7b.png

滾動更新 (edit command)

  1. 設定指定的 Deployment 與 Image 版本 (預設vim 編輯器)
kubectl  edit deployment nginx --record

https://ithelp.ithome.com.tw/upload/images/20190925/20121071SXbeDWJWzx.png
https://ithelp.ithome.com.tw/upload/images/20190925/20121071TIN9Q71Uny.png

  1. 觀看 滾動更新 Pod 服務變動狀態
kubectl rollout status deployment nginx

https://ithelp.ithome.com.tw/upload/images/20190925/201210711sPadD7vt4.png

  1. 觀看 更新後 服務狀態
 kubectl get deployment nginx -o wide

https://ithelp.ithome.com.tw/upload/images/20190925/201210717meYOv89Up.png


回復舊版滾動 (回推一版)

  1. 查看 Deployment 更新版本 歷史紀錄
kubectl rollout history deployment nginx

https://ithelp.ithome.com.tw/upload/images/20190925/20121071Iq59xB9Co2.png

  1. 回到上一版本
kubectl rollout undo deployment nginx

https://ithelp.ithome.com.tw/upload/images/20190925/20121071XvfA3Mjru5.png
3. 觀看 回復後 服務狀態

kubectl get deployment nginx -o wide

回復舊版滾動 (指定版本)

  1. 查看 Deployment 更新版本 歷史紀錄
kubectl rollout history deployment nginx

https://ithelp.ithome.com.tw/upload/images/20190925/20121071Iq59xB9Co2.png

  1. 回到指定版本
kubectl rollout undo deployment nginx --to-revision=5

https://ithelp.ithome.com.tw/upload/images/20190925/20121071ZiUW5vzu0Y.png

  1. 觀看 回復後 服務狀態
kubectl get deployment nginx -o wide


上一篇
[Day 10]KubeEdge 部屬 - ReplicaSet篇
下一篇
[Day 12]KubeEdge 部屬 - Pod 指定 Node 派送
系列文
從開源雲到邊緣運算30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言