On this page
備份 & 升級
開始升級 Kubernetes 叢集
以下指令操作請在佈署主機上的 Kubespray Container 內執行,如不知道如何進行請參考啟動 Kubespray 執行環境
升級前重要事項
請務必於升級前,按照官方建議備份 etcd 叢集內的資料,避免升級損壞時無法修復
設定日誌紀錄路徑
預設日誌只出現在 Console 上,考慮到安裝時間過長 IT 人員無法時刻關注安裝過程,我們需要開啟相關日誌設定
export ANSIBLE_LOG_PATH=/inventory/playbook.log
後面查詢日誌或錯誤時,可以在 /inventory/playbook.log 查詢所有安裝日誌
設定所需變數
export HOSTS_FILE="/inventory/hosts.yml"
export KUBE_VERSION="${KUBE_VERSION}"
再次確認是否都有值
echo $HOSTS_FILE
echo $KUBE_VERSION
更新叢集方式
請務必於升級前做好 etcd 備份,避免後續出現異常時無法恢復
全叢集更新
指定節點更新
指定節點更新與 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": 目標節點為L21的kube_node.hosts底下的worker1與worker2
控制平面
一般升級時會先從控制平面 (Control Plane) 開始
- 請調整
--limit為適合你的數值
kube_control_plane:etcd: 目標節點為kube_control_plane與etcd底下的master1:為分隔符號,亦可以用,取代,變成kube_control_plane,etcd(請見詳情)
運算節點
更新特定運算節點
- 請調整
--limit為適合你的數值
worker1:worker2: 目標節點為worker1以及worker2
只更新 Kubernetes 版本
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?