將管理員叢集遷移至建議功能

總覽

本頁說明如何將 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 建立高可用性管理員叢集

使用 ManualLB 的高可用性管理員叢集

不受影響

不受影響

使用 MetalLBManualLB 的非 HA 管理員叢集

使用相同類型負載平衡器的高可用性管理員叢集

受影響

不受影響

使用 F5 BIG-IP 的非 HA 管理員叢集

使用 ManualLB 的高可用性管理員叢集

受影響

不受影響

使用 Seesaw 的非 HA 管理員叢集

使用 MetalLB 的 HA 管理員叢集

受影響

不受影響

  • 受影響:遷移期間服務會明顯中斷。
  • 不受影響:服務不會中斷,或中斷時間極短,幾乎不會造成影響。

為遷移作業做好準備

如果您的管理員叢集不是 HA 叢集,請按照本節中的步驟,準備遷移至 HA 管理員叢集。如果管理員叢集已具備高可用性,請跳至下一節「準備遷移負載平衡器」。

分配其他 IP 位址

從非高可用性遷移至高可用性管理員叢集時,請額外分配四個 IP 位址。請確認這些 IP 位址與現有管理員叢集節點位於同一個 VLAN,且未由任何現有節點使用:

更新防火牆規則

將管理員叢集從非高可用性遷移至高可用性時,請更新管理員叢集上的防火牆規則。這樣一來,控制層節點新分配到的 IP 位址就能連上所有必要 API 和其他目的地,詳情請參閱「管理員叢集的防火牆規則」。

準備遷移負載平衡器

如果管理員叢集使用整合式 F5 BIG-IP 設定或隨附的 Seesaw 負載平衡器,請按照本節步驟,對管理員叢集設定檔進行必要變更。否則,請跳至下一節「準備從非 HA 遷移至 HA」。

F5 BIG-IP

如果管理員叢集使用整合式 F5 BIG-IP 設定,請對管理員叢集設定檔進行下列變更:

  1. loadBalancer.kind 欄位設為 "ManualLB"
  2. 設定或保留 loadBalancer.vips.controlPlaneVIP 欄位的值。如果管理員叢集已是高可用性,請保留相同的值。如果您要從非 HA 管理員叢集遷移至 HA 管理員叢集,請將 loadBalancer.vips.controlPlaneVIP 欄位的值變更為您分配的 IP 位址。
  3. 刪除整個 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 負載平衡器,請對管理員叢集設定檔進行下列變更:

  1. loadBalancer.kind 欄位設為「MetalLB」。
  2. 保留 network.hostConfig 部分。
  3. 設定或保留 loadBalancer.vips.controlPlaneVIP]5 欄位的值。 如果管理員叢集已是高可用性,您可以保留相同值。如果從非 HA 管理員叢集遷移至 HA 管理員叢集,請將 loadBalancer.vips.controlPlaneVIP 欄位的值變更為您分配的 IP 位址。
  4. 移除 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":""}]

更新管理員叢集設定檔

對管理員叢集設定檔進行下列變更:

  1. network.controlPlaneIPBlock 中填入您為控制層節點分配的三個 IP 位址。
  2. 請確認你已填寫「network.hostConfig」部分。本節包含叢集節點 VM 使用的 NTP 伺服器、DNS 伺服器和 DNS 搜尋網域相關資訊。
  3. 請確認您已將 loadBalancer.vips.controlPlaneVIP 的值替換為您分配的 IP 位址。
  4. adminMaster.replicas 設為 3。
  5. 移除 vCenter.dataDisk 欄位。如果是 HA 管理員叢集,控制平面節點使用的三個資料磁碟路徑,會自動在資料存放區的根目錄 anthos 下產生。
  6. 如果 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.6 192.0.2.50
  kind: ManualLB
  manualLB:
    controlPlaneNodePort: 30003 0

...
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