将 Azure Kubernetes 舰队管理器预览版实例迁移到受支持的状态

在 Azure Kubernetes 舰队管理器(Kubernetes 舰队)的预览版阶段,进行了内部自定义资源定义 (CRD) API 更改,这会影响服务公共预览版期间创建的少量 Kubernetes 舰队实例。

Microsoft 已通知受影响的 Kubernetes 舰队用户,告知他们使用本文来帮助识别受该更改影响的 Kubernetes 舰队实例。

表中显示了 Kubernetes 舰队自定义资源定义 (CRD) API 更改。

旧的 API 定义(不受支持) 新的 API 定义(受支持)
memberclusters.fleet.azure.com/v1alpha1 memberclusters.cluster.kubernetes-fleet.io/v1
internalmemberclusters.fleet.azure.com/v1alpha1 internalmemberclusters.cluster.kubernetes-fleet.io/v1

自 2025 年 3 月起,旧的 API 定义不再获得支持或更新,会从平台部署中删除。

管理员若有受影响的 Kubernetes 舰队实例,则需要创建新的 Kubernetes 舰队实例并手动传输成员群集。 此为一次性活动。

先决条件

  • 必须将 Azure Kubernetes Fleet Manager RBAC Cluster Admin Entra ID 角色分配给执行此活动的用户。

  • 需要安装 Azure CLI 版本 2.61.0 或更高版本。 若要安装或升级,请参阅安装 Azure CLI

  • 你需要 fleet Azure CLI 扩展版本 1.3.0 或更高版本,可以通过运行以下命令来实现安装:

    az extension add --name fleet
    

    运行以下命令以更新到已发布的最新扩展版本:

    az extension update --name fleet
    

识别受到影响的实例

  1. 设置正确的 Azure 订阅。 如果收到了来自 Microsoft 的通知,可在其中找到应使用的一个或多个订阅 ID。

    az account set \
        --subscription <subscription-id>
    
  2. 查找订阅中的所有 Kubernetes 舰队实例。

    az resource list \
        --resource-type 'Microsoft.ContainerService/fleets'
    

    如果部署了多个 Kubernetes 舰队实例,则可以筛选出 2022 年或 2023 年创建的可能受影响的实例。 2024 年创建的实例不受影响。

    az resource list \
        --resource-type 'Microsoft.ContainerService/fleets' \
        --query "[?contains(createdTime, '2023') || contains(createdTime, '2022')]"
    

    如果上述查询返回任何匹配的实例,请根据后续步骤所述,判断这些实例是否正使用已停用的 Kubernetes CRD API。

  3. 下载适用于 Kubernetes 舰队中心群集的 Kubernetes 凭据。

    az fleet get-credentials \
        --resource-group <resource-group> \
        --name <fleet-name>
    
  4. 查询 Kubernetes 舰队中心群集 Kubernetes API,判断是否部署了旧的 CRD 版本。

    kubectl get crd memberclusters.fleet.azure.com
    kubectl get crd internalmemberclusters.fleet.azure.com
    

    如果两个查询都返回 Error from server (NotFound) customresourcedefinitions.apiextensions.k8s.io,则所选的 Kubernetes 舰队实例不会受到影响,也无需执行进一步操作。

    如果有任何实例受到影响,请参阅后续小节了解修正步骤。

修正受到影响的实例

如果发现任何受影响的 Kubernetes 舰队实例,则需执行以下步骤。

  1. 记录受影响 Kubernetes 舰队实例上定义的任何更新运行和群集资源放置规则。
  2. 从受影响的 Kubernetes 舰队实例中移除所有成员群集。
  3. 创建新的 Kubernetes 舰队管理器实例,再根据需要关联成员群集。
  4. 重新应用并验证从旧的 Kubernetes 舰队实例记录的任何配置。
  5. 删除旧的 Kubernetes 舰队实例。