本頁說明如何從 1.29 版的非高可用性 (HA) 管理員叢集,遷移至高可用性管理員叢集。
1.29:預先發布版
1.28:不適用
遷移前後,管理員叢集都有三個節點:
- 非高可用性管理員叢集有一個控制層節點和兩個外掛程式節點。
- 高可用性管理員叢集有三個控制層節點,沒有任何附加元件節點,可用性大幅提升。
為遷移作業做好準備
如果管理員叢集版本為 1.29.0-1.29.600 或 1.30.0-1.30.100,且在 1.14 以下版本中啟用永久加密 Secret,則必須先輪替加密金鑰,才能開始遷移。否則,新的高可用性管理員叢集將無法解密密鑰。
如要檢查叢集是否可能使用舊加密金鑰,請按照下列步驟操作:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secret -n kube-system admin-master-component-options -o jsonpath='{.data.data}' | base64 -d | grep -oP '"GeneratedKeys":\[.*?\]'
如果輸出內容顯示空白金鑰 (如下例所示),您必須輪替加密金鑰。
"GeneratedKeys":[{"KeyVersion":"1","Key":""}]
視需要輪替加密金鑰
如果前一節的步驟顯示您需要輪替加密金鑰,請執行下列步驟:
在管理員叢集設定檔中,遞增
keyVersion
。更新管理員叢集:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
這會建立與新版本號碼相符的新金鑰、重新加密每個密鑰,並安全地清除舊密鑰。後續所有新 Secret 都會使用新的加密金鑰加密。
程序總覽
遷移作業主要包括下列步驟:
編輯管理員叢集設定檔。
執行
gkectl update admin
。 這個指令會執行下列動作:啟動外部叢集 (Kind),並確保目前的非高可用性管理員叢集處於正常狀態。
使用高可用性規格和新的控制層 VIP,建立新的管理員叢集控制層。
關閉現有的管理員叢集控制層。
擷取現有管理員叢集的 etcd 快照。
將舊的管理員叢集資料還原至新的高可用性控制層。
協調還原的管理員叢集,以符合高可用性管理員叢集的最終狀態。
附註
遷移期間,使用者叢集工作負載不會停機。
遷移期間,管理員叢集控制層會暫停運作一段時間。(根據我們的測試,停機時間不到 18 分鐘,但實際時間取決於個別基礎架構環境)。
非高可用性遷移至高可用性時,仍須符合高可用性管理員叢集的需求。舉例來說,高可用性管理員叢集不支援 Seesaw,因此如果您為非高可用性管理員叢集使用 Seesaw 負載平衡器,就必須先遷移至 MetalLB,才能遷移至高可用性管理員叢集。
遷移作業順利完成後,系統會刻意保留非高可用性管理員主機 VM 等剩餘資源,以利進行失敗復原。
遷移前後
下表列出叢集遷移前後的主要差異:
遷移之前 | 遷移之後 | |
---|---|---|
控制層節點備用資源數量 | 1 | 3 |
加購節點 | 2 | 0 |
控制層 Pod 副本 (kube-apiserver、kube-etcd 等) | 1 | 3 |
資料磁碟大小 | 100GB * 1 | 25GB * 3 |
資料磁碟路徑 | 由管理員叢集設定檔中的 vCenter.dataDisk 設定 | 自動產生於目錄下:/anthos/[ADMIN_CLUSTER_NAME]/default/[MACHINE_NAME]-data.vmdk |
控制層 VIP 的負載平衡器 | 由管理員叢集設定檔中的 loadBalancer.kind 設定 | keepalived + haproxy |
管理員叢集控制層節點的 IP 位址分配 | DHCP 或靜態,視 network.ipMode.type 而定 | 3 個靜態 IP 位址 |
為 kubeception 使用者叢集控制層節點分配 IP 位址 | DHCP 或靜態,視 network.ipMode.type 而定 | DHCP 或靜態,視 network.ipMode.type 而定 |
檢查點檔案 | 預設為啟用 | 未使用 |
編輯管理員叢集設定檔
您必須指定四個額外的 IP 位址:
- 管理員叢集控制層節點的三個 IP 位址
- 管理員叢集負載平衡器的新控制層 VIP
您也必須變更管理員叢集設定檔中的其他幾個欄位,詳情請參閱下列各節。
指定 IP 位址
在管理員叢集設定檔中,填入 network.controlPlaneIPBlock 區段。例如:
controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "172.16.20.1" ips: - ip: "172.16.20.50" hostname: "admin-cp-node-1" - ip: "172.16.20.51" hostname: "admin-cp-node-2" - ip: "172.16.20.52" hostname: "admin-cp-node-3"
填寫 hostconfig 區段。如果管理員叢集使用靜態 IP 位址,這個部分會預先填入資訊。例如:
hostConfig: dnsServers: - 203.0.113.1 - 198.51.100.1 ntpServers: - 216.239.35.12
將 loadBalancer.vips.controlPlaneVIP 的值替換為新的 VIP。例如:
loadBalancer: vips: controlPlaneVIP: "172.16.20.59"
更新其他設定欄位
將 adminMaster.replicas 設為
3
:adminMaster: replicas: 3 cpus: 4 memoryMB: 8192
移除 vCenter.dataDisk 欄位。如果是高可用性管理員叢集,控制平面節點使用的三個資料磁碟路徑,會自動在資料存放區的根目錄
anthos
下產生。如果 loadBalancer.manualLB.controlPlaneNodePort 的值不是零,請設為
0
。
調整手動負載平衡器設定
如果管理員叢集使用手動負載平衡,請完成本節內容。 否則請略過這個部分。
針對您在 network.controlPlaneIPBlock 區段中指定的每個新控制層節點 IP 位址,在負載平衡器中設定下列對應:
(舊的 controlPlaneVIP:443) -> (NEW_NODE_IP_ADDRESS:舊的 controlPlaneNodePort)
這項對應可確保舊的控制層 VIP 在遷移期間正常運作。
更新管理員叢集
請檢查您所做的設定變更,因為這些欄位無法變更。確認變更正確無誤後,請更新叢集。
開始遷移:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
更改下列內容:
ADMIN_CLUSTER_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。
ADMIN_CLUSTER_CONFIG:管理員叢集設定檔的路徑
這個指令會顯示遷移作業的進度。
出現提示時,請輸入
Y
繼續操作。遷移完成後,管理員叢集 kubeconfig 檔案會自動更新,以使用新的控制層 VIP。舊版控制層 VIP 仍可運作,也能用來存取新的 HA 管理員叢集。