您可以使用 GKE 連結叢集,在 Google Cloud 控制台中集中管理現有的 CNCF 規範 Kubernetes 叢集,包括在 AWS、Azure 或其他位置代管的叢集。這種集中式管理方式可整合作業,協助您在多個環境中更有效率地部署及執行叢集。本文將說明平台管理員如何將符合資格的 Kubernetes 叢集連結至 Google Cloud。
如要附加 Amazon EKS 或 Azure AKS 叢集,請參閱「附加 EKS 叢集」或「附加 AKS 叢集」。如需使用前一代 GKE 附加叢集的操作說明,請參閱「附加第三方叢集」。
支援的 Kubernetes 叢集
您可以將任何含有 x86 節點的符合標準的 Kubernetes 叢集新增至機群,然後在 Google Cloud 控制台 Google Cloud 中查看,GKE 叢集也會顯示於此。
雖然 Google 不會驗證所有 Kubernetes 發行版本是否完全相容,但會在此記錄任何發現的不相容情形。如需更多詳細資料和疑難排解協助,請參閱「GKE 叢集版本和升級支援」。
必要條件
請確保叢集符合叢集需求條件。
附加叢集時,您必須指定下列項目:
- 支援的 Google Cloud 行政區
- 平台版本
管理區域是 Google Cloud 區域 ,用於管理附加叢集。您可以選擇任何支援的區域,但最佳做法是選擇地理位置最靠近叢集的區域。管理區域不會儲存任何使用者資料。
平台版本是指要安裝在叢集上的 GKE 附加叢集版本。您可以執行下列指令,列出所有支援的版本:
gcloud container attached get-server-config \
--location=GOOGLE_CLOUD_REGION
將 GOOGLE_CLOUD_REGION 替換為要從中管理叢集的Google Cloud 位置名稱。
平台版本編號
這些文件將 GKE 附加叢集版本稱為平台版本,以區別於 Kubernetes 版本。GKE 附加叢集採用的版本編號慣例與 GKE 相同,例如 1.21.5-gke.1。附加或更新叢集時,您必須選擇平台版本,其子版本與叢集的 Kubernetes 版本相同,或低一個層級。舉例來說,您可以附加執行 Kubernetes v1.22.* 的叢集,並使用 GKE 附加叢集平台版本 1.21.* 或 1.22.*。
這樣一來,您就能在升級 GKE 連結的叢集前,先將叢集升級至下一個子版本。
連結叢集
如要將符合 CNCF 標準的叢集附加至 Google Cloud Fleet 管理,請執行下列指令:
確認 kubeconfig 檔案中包含要附加的叢集項目。具體操作說明會因發行版本而異。
執行下列指令,擷取叢集的 kubeconfig 環境,並儲存在
KUBECONFIG_CONTEXT環境變數中:KUBECONFIG_CONTEXT=$(kubectl config current-context)視叢集是否具有公開或私人的 OIDC 簽發者,註冊叢集的指令會略有不同。請選擇適用於叢集的分頁:
私有 OIDC 核發者
使用
gcloud container attached clusters register指令註冊叢集:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=generic \ --context=KUBECONFIG_CONTEXT \ --has-private-issuer \ --kubeconfig=KUBECONFIG_PATH更改下列內容:
- CLUSTER_NAME:叢集名稱。CLUSTER_NAME 必須符合 RFC 1123 標籤名稱標準。
- GOOGLE_CLOUD_REGION:用來管理叢集的 Google Cloud 區域
- PROJECT_NUMBER:要註冊叢集的機群主機專案
- PLATFORM_VERSION:叢集使用的平台版本
- KUBECONFIG_CONTEXT:kubeconfig 中的內容,用於存取叢集
- KUBECONFIG_PATH:kubeconfig 的路徑
公開 OIDC 核發者
擷取叢集的 OIDC 簽發者網址,並儲存以供日後使用。具體操作說明因發行版本而異。
執行下列指令,擷取叢集的 kubeconfig 環境,並儲存在
KUBECONFIG_CONTEXT環境變數中:KUBECONFIG_CONTEXT=$(kubectl config current-context)使用
gcloud container attached clusters register指令註冊叢集:gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=generic \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH更改下列內容:
- CLUSTER_NAME:叢集名稱。CLUSTER_NAME 必須符合 RFC 1123 標籤名稱標準。
- GOOGLE_CLOUD_REGION:管理叢集的 Google Cloud 區域
- PROJECT_NUMBER:叢集要註冊的機群主機專案
- PLATFORM_VERSION:叢集要使用的 GKE 附加叢集版本
- ISSUER_URL:先前擷取的核發者網址
- KUBECONFIG_CONTEXT:kubeconfig 中的內容,用於存取叢集,如先前所擷取
- KUBECONFIG_PATH:kubeconfig 的路徑
授權 Cloud Logging / Cloud Monitoring
如要讓 GKE 附加叢集建立系統記錄檔和指標,並上傳至Google Cloud,必須先獲得授權。
如要授權 Kubernetes 工作負載身分 gke-system/gke-telemetry-agent 將記錄檔寫入 Google Cloud Logging,以及將指標寫入 Google Cloud Monitoring,請執行下列指令:
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
將 GOOGLE_PROJECT_ID 替換為叢集的 Google Cloud 專案 ID。
這項 IAM 繫結會授予 Google Cloud 專案中所有叢集上傳記錄和指標的權限。您只需要在為專案建立第一個叢集後執行這項繫結。
除非至少有一個叢集已在 Google Cloud 專案中建立,否則新增這項 IAM 繫結會失敗。這是因為在建立叢集之前,系統不會佈建其參照的 workload identity pool (GOOGLE_PROJECT_ID.svc.id.goog)。