透過 GKE 附加叢集,您可以將現有的 Kubernetes 叢集 (無論是託管在 AWS、Azure 或其他位置) 帶入 Google Kubernetes Engine (GKE) Enterprise 版的資訊主頁,進行集中管理。包括連結任何符合 CNCF 標準的 Kubernetes 叢集。
支援的 Kubernetes 叢集
您可以將任何含有 x86 節點的符合標準的 Kubernetes 叢集新增至機群,然後在 Google Cloud 控制台中查看,GKE 叢集也會顯示於此。
雖然 Google 不會驗證所有 Kubernetes 發行版本是否完全相容,但我們會在本文中記錄任何發現的不相容問題。如需更多詳細資料和疑難排解協助,請參閱「Google Kubernetes Engine (GKE) Enterprise 版版本和升級支援」。
必要條件
請確保叢集符合叢集需求條件。
附加叢集時,您必須指定下列項目:
- 支援的 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 機群管理,請執行下列指令:
確認 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 繫結會失敗。這是因為在建立叢集之前,系統不會佈建所參照的工作負載身分集區 (GOOGLE_PROJECT_ID.svc.id.goog
)。