總覽
本頁說明如何將 1.30 以上版本的管理員叢集遷移至下列建議功能:
負載平衡器設定:
整合式 F5 BIG-IP 負載平衡器設定,請參閱
ManualLB
。或
套裝組合的 Seesaw 負載平衡器至 MetalLB。
從非高可用性管理員叢集遷移至高可用性管理員叢集。使用相同數量的 VM 時,高可用性管理員叢集可大幅提升可用性。非 HA 管理員叢集有一個控制層節點和兩個外掛程式節點。高可用性管理員叢集的三個節點都是控制層節點,沒有附加元件節點。
本頁面適用於負責管理基礎技術架構生命週期的 IT 管理員和作業人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
如要進一步瞭解遷移規劃,請參閱「規劃叢集遷移至建議功能」。
最佳做法
如果您有多個環境 (例如測試、開發和正式環境),建議您先遷移最不重要的環境,例如測試環境。確認遷移作業成功後,請針對每個環境重複執行這項程序,最後再遷移正式環境。這樣一來,您就能驗證每次遷移作業是否成功,並確保工作負載正常運作,再移至下一個更重要的環境。
需求條件
- 管理員叢集必須為 1.30 以上版本。
- 管理員叢集管理的所有使用者叢集,都必須已遷移至建議功能,如「將使用者叢集遷移至建議功能」一文所述。
規劃遷移期間的停機時間
遷移期間,控制層會暫停服務一段時間,非高可用性管理員叢集的 Kubernetes API 存取權會暫時無法使用約 20 分鐘,但高可用性管理員叢集的 Kubernetes 控制層仍可透過 F5 存取。遷移期間,Kubernetes 資料平面會繼續穩定運作。
寄件者 | 收件者 | Kubernetes API 存取權 | 使用者工作負載 |
---|---|---|---|
使用 F5 BIG-IP 建立高可用性管理員叢集 |
使用 |
不受影響 |
不受影響 |
使用 |
使用相同類型負載平衡器的高可用性管理員叢集 |
受影響 |
不受影響 |
使用 F5 BIG-IP 的非 HA 管理員叢集 |
使用 |
受影響 |
不受影響 |
使用 Seesaw 的非 HA 管理員叢集 |
使用 MetalLB 的 HA 管理員叢集 |
受影響 |
不受影響 |
- 受影響:遷移期間服務會明顯中斷。
- 不受影響:服務不會中斷,或中斷時間極短,幾乎不會造成影響。
為遷移作業做好準備
如果您的管理員叢集不是 HA 叢集,請按照本節中的步驟,準備遷移至 HA 管理員叢集。如果管理員叢集已具備高可用性,請跳至下一節「準備遷移負載平衡器」。
分配其他 IP 位址
從非高可用性遷移至高可用性管理員叢集時,請額外分配四個 IP 位址。請確認這些 IP 位址與現有管理員叢集節點位於同一個 VLAN,且未由任何現有節點使用:
- 為新的控制層 VIP 分配一個 IP 位址,用於管理員叢集設定檔中的
loadBalancer.vips.controlPlaneVIP
欄位。 - 為三個控制層節點各自分配一個新 IP 位址,用於管理員叢集設定檔的
network.controlPlaneIPBlock
區段。
更新防火牆規則
將管理員叢集從非高可用性遷移至高可用性時,請更新管理員叢集上的防火牆規則。這樣一來,控制層節點新分配到的 IP 位址就能連上所有必要 API 和其他目的地,詳情請參閱「管理員叢集的防火牆規則」。
準備遷移負載平衡器
如果管理員叢集使用整合式 F5 BIG-IP 設定或隨附的 Seesaw 負載平衡器,請按照本節步驟,對管理員叢集設定檔進行必要變更。否則,請跳至下一節「準備從非 HA 遷移至 HA」。
F5 BIG-IP
如果管理員叢集使用整合式 F5 BIG-IP 設定,請對管理員叢集設定檔進行下列變更:
- 將
loadBalancer.kind
欄位設為"ManualLB"
。 - 設定或保留
loadBalancer.vips.controlPlaneVIP
欄位的值。如果管理員叢集已是高可用性,請保留相同的值。如果您要從非 HA 管理員叢集遷移至 HA 管理員叢集,請將loadBalancer.vips.controlPlaneVIP
欄位的值變更為您分配的 IP 位址。 - 刪除整個
loadBalancer.f5BigIP
區段。
下列管理員叢集設定檔範例顯示這些變更:
loadBalancer: vips: controlPlaneVIP: 192.0.2.6 kind:"F5BigIP""ManualLB"f5BigIP: address: "203.0.113.20" credentials: fileRef: path: ""my-config-folder/user-creds.yaml" entry: "f5-creds" partition: "my-f5-user-partition"
Seesaw
如果管理員叢集使用 Seesaw 負載平衡器,請對管理員叢集設定檔進行下列變更:
- 將
loadBalancer.kind
欄位設為「MetalLB」。 - 保留
network.hostConfig
部分。 - 設定或保留
loadBalancer.vips.controlPlaneVIP
]5 欄位的值。 如果管理員叢集已是高可用性,您可以保留相同值。如果從非 HA 管理員叢集遷移至 HA 管理員叢集,請將loadBalancer.vips.controlPlaneVIP
欄位的值變更為您分配的 IP 位址。 - 移除
loadBalancer.seesaw
區段。
下列管理員叢集設定檔範例顯示這些變更:
network: hostConfig: dnsServers: - "203.0.113.1" - "203.0.113.2" ntpServers: - "203.0.113.3" loadBalancer: vips: controlPlaneVIP: 192.0.2.6 kind: "MetalLB""Seesaw"seesaw: ipBlockFilePath: "user-cluster-1-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072
準備從非高可用性遷移至高可用性
如果管理員叢集不是高可用性叢集,請按照本節中的步驟,準備遷移至高可用性叢集。
如果管理員叢集已是 HA,請跳至下一節「遷移管理員叢集」。
如果管理員叢集版本為 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":""}]
更新管理員叢集設定檔
對管理員叢集設定檔進行下列變更:
- 在
network.controlPlaneIPBlock
中填入您為控制層節點分配的三個 IP 位址。 - 請確認你已填寫「
network.hostConfig
」部分。本節包含叢集節點 VM 使用的 NTP 伺服器、DNS 伺服器和 DNS 搜尋網域相關資訊。 - 請確認您已將
loadBalancer.vips.controlPlaneVIP
的值替換為您分配的 IP 位址。 - 將
adminMaster.replicas
設為 3。 - 移除
vCenter.dataDisk
欄位。如果是 HA 管理員叢集,控制平面節點使用的三個資料磁碟路徑,會自動在資料存放區的根目錄anthos
下產生。 - 如果
loadBalancer.kind
設為"ManualLB"
,請將loadBalancer.manualLB.controlPlaneNodePort
設為 0。
下列管理員叢集設定檔範例顯示這些變更:
vCenter: address: "my-vcenter-server.my-domain.example" datacenter: "my-data-center"dataDisk: "xxxx.vmdk"... network: hostConfig: dnsServers: - 203.0.113.1 - 203.0.113.2 ntpServers: - 203.0.113.3 ... controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "198.51.100.1" ips: - ip: "192.0.2.1" hostname: "admin-cp-hostname-1" - ip: "192.0.2.2" hostname: "admin-cp-hostname-2" - ip: "192.0.2.3" hostname: "admin-cp-hostname-3" ... ... loadBalancer: vips: controlPlaneVIP:192.0.2.6192.0.2.50 kind: ManualLB manualLB:controlPlaneNodePort: 300030 ... adminMaster: replicas: 3 cpus: 4 memoryMB: 8192 ...
視需要調整負載平衡器中的對應
如果管理員叢集使用手動負載平衡,請完成本節中的步驟。
如果您要從整合式 F5 BIG-IP 遷移至手動負載平衡,或是要遷移至 MetalLB,請跳至下一節「遷移管理員叢集」。
針對您在 network.controlPlaneIPBlock
專區中指定的三個新控制層節點 IP 位址,在外部負載平衡器 (例如 F5 BIG-IP 或 Citrix) 中設定下列對應:
(old controlPlaneVIP:443) -> (NEW_NODE_IP_ADDRESS:old controlPlaneNodePort)
這樣可確保舊的控制層 VIP 在遷移期間繼續運作。
遷移管理員叢集
請仔細檢查您對管理員叢集設定檔所做的所有變更。除了更新遷移的叢集外,所有設定都無法變更。
更新叢集:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
--config ADMIN_CLUSTER_CONFIG
Replace the following
:
ADMIN_CLUSTER_KUBECONFIG
:管理員叢集 kubeconfig 檔案的路徑。ADMIN_CLUSTER_CONFIG
:管理員叢集設定檔的路徑。
這個指令會顯示遷移作業的進度。
出現提示時,請輸入 Y
繼續操作。
從非高可用性遷移至高可用性時,舊版控制層虛擬 IP 會繼續運作,可用於存取新的高可用性管理員叢集。遷移作業完成後,管理員叢集 kubeconfig 檔案會自動更新,以使用新的控制平面 VIP。
遷移後
更新完成後,請確認管理員叢集是否正在執行:
kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG
預期輸出內容如下:
負載平衡器遷移
如果您已遷移負載平衡器,請確認負載平衡器元件是否順利運作。
MetalLB
如果您已遷移至 MetalLB,請使用下列指令,確認 MetalLB 元件是否順利執行:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
--namespace kube-system --selector app=metallb
輸出內容會顯示 MetalLB 控制器和揚聲器的 Pod。例如:
metallb-controller-744884bf7b-rznr9 1/1 Running
metallb-speaker-6n8ws 1/1 Running
metallb-speaker-nb52z 1/1 Running
metallb-speaker-rq4pp 1/1 Running
遷移作業完成後,請刪除管理員叢集已關閉電源的 Seesaw VM。您可以在設定目錄的 seesaw-for-gke-admin.yaml
檔案中找到 Seesaw VM 名稱。vmnames
ManualLB
將叢集更新為使用手動負載平衡後,叢集的流量不會中斷。這是因為現有的 F5 資源仍然存在,您可以執行下列指令來確認:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
預期輸出內容如下:
Warning: v1 ComponentStatus is deprecated in v1.19+
NAMESPACE NAME TYPE DATA AGE
kube-system secret/bigip-login-xt697x Opaque 4 13h
NAMESPACE NAME SECRETS AGE
kube-system serviceaccount/bigip-ctlr 0 13h
kube-system serviceaccount/load-balancer-f5 0 13h
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/k8s-bigip-ctlr-deployment 1/1 1 1 13h
kube-system deployment.apps/load-balancer-f5 1/1 1 1 13h
NAME ROLE AGE
clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding ClusterRole/bigip-ctlr-clusterrole 13h
clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding ClusterRole/load-balancer-f5-clusterrole 13h
NAME CREATED AT
clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole 2024-03-25T04:37:34Z
clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole 2024-03-25T04:37:34Z