迁移 EKS 关联集群

先前版本的 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,则必须更新成员资格才能启用它。

  1. 使用以下命令检索集群的 OIDC 颁发者网址:

    aws eks describe-cluster \
    --region AWS_REGION \
    --name CLUSTER_NAME \
    --query "cluster.identity.oidc.issuer" \
    --output text
    

    此命令将输出您的 OIDC 颁发者的网址。保存此值以便稍后使用。

  2. 更新成员资格:

    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 关联集群,请执行以下操作:

  1. 提取集群的 kubeconfig 上下文并将其存储在 KUBECONFIG_CONTEXT 环境变量中:

    KUBECONFIG_CONTEXT=$(kubectl config current-context)
    
  2. 运行以下命令,将集群迁移到当前世代的 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_CONTEXTkubeconfig 中要连接到您的集群的上下文的名称
    • KUBECONFIG_PATHkubeconfig 文件的位置。 如果未指定,默认值为 ~/.kube/config

    成员资格指示符是一个字符串,用于唯一标识关联集群,格式为 projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP_ID,其中

    • PROJECT_NUMBER 是您的舰队宿主项目编号。您必须指定与集群当前所属的项目编号相同的项目编号

    • MEMBERSHIP_ID:这必须是现有集群的舰队成员资格 ID。GKE 关联集群会将此值用作您的集群名称。