總覽
連結叢集是指將叢集連線至 Google Cloud ,方法是向Google Cloud 機群管理註冊叢集,並在叢集上安裝 GKE 連接的叢集軟體。
您可以使用 gcloud CLI 或 Terraform 連結叢集。如要瞭解如何使用 Terraform 建立及連結 EKS 叢集,請查看 GitHub 存放區的 GKE 連結叢集範例。
本文適用於想要設定、監控及管理雲端基礎架構的 IT 管理員和操作人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
如要使用 gcloud 連結 EKS 叢集,請執行下列步驟。
必要條件
請確保叢集符合叢集需求條件。
附加叢集時,您必須指定:
- 支援的 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 連結的叢集。
連結 EKS 叢集
如要將 EKS 叢集附加至 Google Cloud Fleet 管理,請執行下列步驟:
確認 kubeconfig 檔案中包含要附加的叢集項目:
aws eks update-kubeconfig --region AWS_REGION \ --name EKS_CLUSTER_NAME
使用下列指令擷取 OIDC 核發者網址:
aws eks describe-cluster \ --region AWS_REGION \ --name EKS_CLUSTER_NAME \ --query "cluster.identity.oidc.issuer" \ --output text
這項指令會輸出 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=eks \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
取代:
- AWS_REGION:EKS 叢集所在的 AWS 區域
- CLUSTER_NAME:叢集名稱。這個名稱可以與您在先前步驟中使用的 EKS_CLUSTER_NAME 相同。CLUSTER_NAME 必須符合 RFC 1123 標籤名稱標準。
- GOOGLE_CLOUD_REGION:管理叢集的 Google Cloud 區域
- PLATFORM_VERSION:叢集要使用的 GKE 附加叢集版本
- PROJECT_NUMBER:叢集註冊的機群主機專案
- ISSUER_URL:先前擷取的核發者網址
- KUBECONFIG_CONTEXT:kubeconfig 中的內容,用於存取先前擷取的 EKS 叢集
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
)。