先前版本的 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 关联集群(上一代)中的现有集群必须先启用 Workload Identity,然后才能迁移到当前一代的 GKE 关联集群。
如需确定是否启用了 WI,请运行以下命令并检查任何 Workload Identity 字段的输出:
gcloud container hub memberships describe MEMBERSHIP_NAME
如果未启用 Workload Identity,则必须更新成员资格才能启用它。
使用以下命令检索集群的 OIDC 颁发者网址:
aws eks describe-cluster \ --region AWS_REGION \ --name CLUSTER_NAME \ --query "cluster.identity.oidc.issuer" \ --output text
此命令将输出您的 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 中用于访问 EKS 集群的上下文
- 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)
- CLUSTER_DISTRIBUTION:集群类型 - 对于 AWS 的 Elastic Kubernetes Service 为
eks
,对于 Azure Kubernetes Service 为aks
,对于任何其他发行版为generic
- KUBECONFIG_CONTEXT:
kubeconfig
中要连接到您的集群的上下文的名称 - KUBECONFIG_PATH:
kubeconfig
文件的位置。 如果未指定,默认值为~/.kube/config
。
成员资格指示符是一个字符串,用于唯一标识关联集群,格式为
projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP_ID
,其中PROJECT_NUMBER 是您的舰队宿主项目编号。您必须指定与集群当前所属的项目编号相同的项目编号
MEMBERSHIP_ID:这必须是现有集群的舰队成员资格 ID。GKE 关联集群会将此值用作您的集群名称。