GKE 附加叢集的前身稱為 GKE 附加叢集 (前一代)。從舊版 GKE 連結叢集遷移至目前這一代,即可存取這項功能,包括生命週期管理和機群註冊。遷移作業是單向作業,一旦遷移至當代 GKE 連結叢集,就無法返回 GKE 連結叢集 (前一代)。
版本編號政策
這些文件將 GKE 附加叢集版本稱為平台版本,以區別於 Kubernetes 版本。GKE 附加叢集採用的版本編號慣例與 GKE 相同,例如 1.21.5-gke.1。附加或更新叢集時,您必須選擇平台版本,其子版本與叢集的 Kubernetes 版本相同,或低一個層級。舉例來說,您可以將執行 Kubernetes v1.22.* 的叢集,附加至 GKE 附加叢集平台版本 1.21.* 或 1.22.*。
這樣一來,您就能先將叢集升級至下一個子版本,再升級 GKE 連結的叢集。
確認已啟用 Workload Identity
從 GKE 附加叢集 (上一代) 遷移至目前這一代 GKE 附加叢集時,現有叢集必須先啟用 Workload Identity。
如要判斷是否已啟用 WI,請執行下列指令,並檢查輸出內容中是否有任何 Workload Identity 欄位:
gcloud container hub memberships describe MEMBERSHIP_NAME
如果未啟用 Workload Identity,您必須更新成員資格才能啟用。
更新叢集成員資格的指令會略有不同,視您是否已使用預設私有 OIDC 簽發者或實驗性公開簽發者設定叢集而定。選擇適用於叢集的分頁:私人 OIDC 核發者 (預設)
gcloud container hub memberships register MEMBERSHIP_NAME \
--context=KUBECONFIG_CONTEXT \
--kubeconfig=KUBECONFIG_PATH \
--enable-workload-identity \
--has-private-issuer
取代:
- MEMBERSHIP_NAME:叢集的成員名稱
- KUBECONFIG_CONTEXT:kubeconfig 中的內容,用於存取 AKS 叢集
- KUBECONFIG_PATH:kubeconfig 檔案的路徑
公開 OIDC 核發者
- 使用下列指令擷取叢集的 OIDC 簽發者 URL:
az aks show -n CLUSTER_NAME \
-g RESOURCE_GROUP \
--query "oidcIssuerProfile.issuerUrl" -otsv
這項指令會輸出 OIDC 核發者的網址。請儲存這個值,以供日後使用。
- 更新會員方案:
gcloud container fleet memberships register MEMBERSHIP_NAME \
--context=KUBECONFIG_CONTEXT \
--kubeconfig=KUBECONFIG_PATH \
--enable-workload-identity \
--public-issuer-url=OIDC_URL
取代:
- MEMBERSHIP_NAME:叢集的成員名稱
- KUBECONFIG_CONTEXT:kubeconfig 中的內容,用於存取 AKS 叢集
- KUBECONFIG_PATH:kubeconfig 的路徑
- OIDC_URL:先前擷取的 OIDC 網址
遷移叢集
如要將叢集從 GKE 附加叢集 (舊版) 遷移至 GKE 附加叢集,請按照下列步驟操作:
擷取叢集的 kubeconfig 內容,並儲存在 KUBECONFIG_CONTEXT 環境變數中:
KUBECONFIG_CONTEXT=$(kubectl config current-context)
執行下列指令,將叢集遷移至當代 GKE 連結叢集。這個指令會擷取叢集設定的相關詳細資料,向 Google Fleet Management 註冊叢集,並在叢集上安裝或升級任何必要軟體,例如生命週期代理程式。
gcloud container attached clusters import \ --location=GOOGLE_CLOUD_REGION \ --fleet-membership=FLEET_MEMBERSHIP \ --platform-version=PLATFORM_VERSION \ --distribution=CLUSTER_DISTRIBUTION \ --context=KUBECONFIG_CONTEXT \ [--kubeconfig=KUBECONFIG_PATH]
取代:
- GOOGLE_CLOUD_REGION:管理叢集的 Google Cloud 位置
- FLEET_MEMBERSHIP:已註冊叢集的完整成員資格指定符 (請參閱下文)
- PLATFORM_VERSION:要遷移的 GKE 附加叢集版本 (例如:v1.22.0-gke.1)
- :叢集類型 - AWS 的 Elastic Kubernetes Service 為
eks
,Azure Kubernetes Service 為aks
,其他發行版本則為generic
CLUSTER_DISTRIBUTION - KUBECONFIG_CONTEXT:您要用來連線至叢集的
kubeconfig
中的內容名稱。 - KUBECONFIG_PATH:
kubeconfig
檔案的位置。如未指定,則預設值為~/.kube/config
成員資格指定符是可唯一識別所連結叢集的字串,格式為
projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP_ID
,其中PROJECT_NUMBER 是機群主專案號碼。您必須指定與叢集目前所屬專案相同的專案編號
MEMBERSHIP_ID:這必須是現有叢集的 Fleet 成員 ID。GKE 附加叢集會將這個值做為叢集名稱。
支援 Azure 工作負載身分
Azure 提供 WI 公開預先發布版支援。啟用這項功能會變更叢集的 OIDC 簽發者 URL。如果已使用先前的 OIDC 網址註冊叢集,就無法更新為新網址,因為目前無法更新該欄位。
解決方法如下:
- 重新建立叢集,並啟用 Workload Identity。
- 連結 AKS 叢集。
- 將工作負載遷移至新叢集。
- 刪除舊叢集。