迁移符合 CNCF 的集群

先前版本的 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 颁发者还是专用 OIDC 颁发者。根据您集群的具体情况选择相应的标签页:

专用 OIDC 颁发者

gcloud container hub memberships register MEMBERSHIP_NAME \
--context=KUBECONFIG_CONTEXT \
--kubeconfig=KUBECONFIG_PATH \
--enable-workload-identity \
--has-private-issuer

您需要将其中的:

  • MEMBERSHIP_NAME:您的集群的成员资格名称
  • KUBECONFIG_CONTEXT:kubeconfig 中用于访问 AKS 集群的上下文
  • KUBECONFIG_PATH:kubeconfig 文件的路径

公共 OIDC 颁发者

  • 检索集群的 OIDC 颁发者网址。具体说明因分布情况而异。

此命令将输出您的 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 中用于访问 AKS 集群的上下文
  • 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 关联集群会将此值用作您的集群名称。