先前版本的 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 关联集群,请执行以下操作:
提取集群的 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 关联集群会将此值用作您的集群名称。
Azure Workload Identity 支持
Azure 提供的 WI 支持处于公开预览版状态。启用此功能会更改集群的 OIDC 颁发者网址。如果您已使用先前的 OIDC 网址注册集群,则无法更新为新网址,因为该字段目前无法更新。
如需解决此问题,请执行以下操作:
- 重新创建启用了 Workload Identity 的集群。
- 关联 AKS 集群。
- 将您的工作负载迁移到新集群。
- 删除旧集群。