升級前重要事項

請務必於升級前,按照官方建議備份 etcd 叢集內的資料,避免升級損壞時無法修復

設定日誌紀錄路徑

預設日誌只出現在 Console 上,考慮到安裝時間過長 IT 人員無法時刻關注安裝過程,我們需要開啟相關日誌設定

  export ANSIBLE_LOG_PATH=/inventory/playbook.log
  

後面查詢日誌或錯誤時,可以在 /inventory/playbook.log 查詢所有安裝日誌

設定所需變數

export HOSTS_FILE="/inventory/hosts.yml"
export KUBE_VERSION="${KUBE_VERSION}"
  1. /inventory/hosts.yml參數調整階段所產生的檔案,如有異動請調整成對應的檔名與路徑
  2. KUBE_VERSION請參考步驟獲取正確版本

再次確認是否都有值

  echo $HOSTS_FILE
echo $KUBE_VERSION
  

更新叢集方式

全叢集更新

指定節點更新

指定節點更新與 hosts.yml 內容息息相關,以下為示範用例:

all:
  vars:
    ansible_user: <部署專用帳號>
  hosts:
    master1:
      ansible_host: 192.168.1.2
      ip: 192.168.1.2
      access_ip: 192.168.1.2
    worker1:
      ansible_host: 192.168.1.3
      ip: 192.168.1.3
      access_ip: 192.168.1.3
    worker2:
      ansible_host: 192.168.1.4
      ip: 192.168.1.4
      access_ip: 192.168.1.4
  children:
    kube_control_plane:
      hosts:
        master1:
    kube_node:
      hosts:
        worker1:
        worker2:
    etcd:
      hosts:
        master1:
    k8s_cluster:
      children:
        kube_control_plane:
        kube_node:
    calico_rr:
      hosts: {}

特定節點升級需要使用到 --limit指定 ansible-playbook 要執行的目標節點,搭配上方 hosts.yml

  • --limit "kube_node": 目標節點為 L21kube_node.hosts 底下的 worker1worker2

控制平面

一般升級時會先從控制平面 (Control Plane) 開始

  • 請調整 --limit 為適合你的數值
  • kube_control_plane:etcd: 目標節點為 kube_control_planeetcd 底下的 master1
    • : 為分隔符號,亦可以用 , 取代,變成 kube_control_plane,etcd (請見詳情)

運算節點

更新特定運算節點

  • 請調整 --limit 為適合你的數值
  • worker1:worker2: 目標節點為 worker1 以及 worker2

只更新 Kubernetes 版本

執行 extra_playbooks/upgrade-only-k8s.yml,此腳本執行時不會去更新其它元件,包含:

  • Will not upgrade etcd
  • Will not upgrade network plugins
  • Will not upgrade Docker
  • Will not pre-download containers or kubeadm
  • Currently does not support Vault deployment.

詳情請見extra_playbooks/upgrade-only-k8s.yml

執行更新腳本

  ansible-playbook extra_playbooks/upgrade-only-k8s.yml -b -K \ 
-i ${HOSTS_FILE} \
-e kube_version=&{KUBE_VERSION}
  

增減、替換節點

現階段請先參考官方說明

Was this page helpful?