迁移 AKS 集群

先前版本的 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 颁发者(默认)

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 颁发者网址:
  az aks show -n CLUSTER_NAME \
    -g RESOURCE_GROUP \
    --query "oidcIssuerProfile.issuerUrl" -otsv

此命令将输出您的 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 关联集群会将此值用作您的集群名称。

Azure Workload Identity 支持

Azure 提供的 WI 支持处于公开预览版状态。启用此功能会更改集群的 OIDC 颁发者网址。如果您已使用先前的 OIDC 网址注册集群,则无法更新为新网址,因为该字段目前无法更新。

如需解决此问题,请执行以下操作:

  1. 重新创建启用了 Workload Identity 的集群。
  2. 关联 AKS 集群
  3. 将您的工作负载迁移到新集群。
  4. 删除旧集群。