你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

部署和管理适用于 Azure Kubernetes 服务 (AKS) 的群集扩展

群集扩展为 AKS 群集上的 Azure 机器学习 (ML) 等服务的安装和生命周期管理提供了 Azure 资源管理器驱动的体验。 使用此功能可以:

  • 基于 Azure 资源管理器的扩展部署,包括跨 AKS 群集的大规模部署。
  • 通过 Azure 资源管理器对扩展进行生命周期管理(更新、删除)。

本文介绍以下内容:

  • 如何创建扩展实例。
  • AKS 上的可用群集扩展。
  • 如何查看、列出、更新和删除扩展实例。

群集扩展 - 已启用 Azure Arc 的 Kubernetes 一文中提供了此功能的概念性概述。

先决条件

重要

确保使用托管标识创建 AKS 群集,因为群集扩展不适用于基于服务主体的群集。

对于使用 az aks create 创建的新集群,默认将配置托管标识。 对于需要切换到托管标识的现有基于服务主体的群集,可以结合 --enable-managed-identity 标志运行 az aks update 来启用托管标识。 有关详细信息,请参阅使用托管标识

  • Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户
  • 已安装的 Azure CLI 版本不低于 2.16.0。

注意

如果已在 AKS 群集上启用了 Azure AD Pod 托管标识或正在考虑实现该标识,我们建议首先查看工作负载标识概述,以了解我们的建议和选项,从而将群集设置为使用 Azure AD 工作负载标识(预览版)。 此身份验证方法将替代 pod 托管标识(预览),后者与 Kubernetes 本机功能集成,以便与任何外部标识提供者联合。

Azure Kubernetes 服务中的开源 Azure AD Pod 托管标识(预览版)已于 2022 年 10 月 24 日弃用。

设置适用于群集扩展的 Azure CLI 扩展

注意

k8s-extension Azure CLI 扩展支持的最低版本是 1.0.0。 如果不确定已安装的版本,请运行 az extension show --name k8s-extension,然后查找 version 字段。

还需要 k8s-extension Azure CLI 扩展。 通过运行以下命令来安装此扩展:

az extension add --name k8s-extension

如果已安装 k8s-extension 扩展,你可使用以下命令将其更新到最新版本:

az extension update --name k8s-extension

当前可用的扩展

注意

群集扩展为在 AKS 群集上安装和管理不同扩展提供了一个平台。 如果你在使用任何这些扩展时遇到问题,请根据各自服务提交支持票证。

分机 说明
Dapr Dapr 是一个可移植的事件驱动型运行时,它使任何开发人员都能够轻松构建在云端和边缘运行的可复原的、无状态的和有状态的应用程序。
Azure ML 使用 Azure Kubernetes 服务群集来训练、推断和管理 Azure 机器学习中的机器学习模型。
Flux (GitOps) 将 GitOps 与 Flux 结合使用,以管理群集配置和应用程序部署。

支持的区域和 Kubernetes 版本

启用了 Azure Arc 的 Kubernetes 区域支持中列出了可在区域中的 AKS 群集上使用的群集扩展。

有关支持的 Kubernetes 版本,请参阅每个扩展的相应文档。

群集扩展的用法

注意

本文中提供的示例并不完整,只是为了展示功能。 有关命令及其参数的完整列表,请参阅 az k8s-extension CLI 参考

创建扩展实例

使用 k8s-extension create 并传入必需参数的值来创建新的扩展实例。 以下命令将在 AKS 群集上创建 Azure 机器学习扩展实例:

az k8s-extension create --name aml-compute --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type managedClusters --configuration-settings enableInference=True allowInsecureConnections=True

注意

群集扩展服务无法将敏感信息保留 48 小时以上。 如果群集扩展代理保持网络连接的时间不超过 48 小时,且无法确定是否要在群集上创建扩展,则扩展会转换为 Failed 状态。 一旦进入 Failed 状态,你就需要再次运行 k8s-extension create 以创建全新的扩展实例。

必需的参数

参数名称 说明
--name 扩展实例的名称
--extension-type 要在群集上安装的扩展类型。 例如:Microsoft.AzureML.Kubernetes
--cluster-name 必须在其中创建扩展实例的 AKS 群集的名称
--resource-group 包含 AKS 群集的资源组
--cluster-type 必须要在其上创建扩展实例的群集类型。 指定 managedClusters,因为其映射到 AKS 群集

可选参数

参数名称 说明
--auto-upgrade-minor-version 布尔值属性,指定是否要自动升级扩展的次要版本。 默认值:true。 如果此参数设置为 true,那么你不能设置 version 参数,因为版本将动态更新。 如果设置为 false,则不会自动升级扩展(即使对于补丁版本也是如此)。
--version 要安装的扩展版本(要将扩展实例固定到的特定版本)。 如果 auto-upgrade-minor-version 设置为 true,则不可提供此参数。
--configuration-settings 可传入到扩展以控制其功能的设置。 在参数名称后面将值作为空格分隔 key=value 对传递。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings-file
--configuration-settings-file JSON 文件的路径,该文件包含用于将配置设置传入到扩展的键值对。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings
--configuration-protected-settings 这些设置是无法使用 GET API 调用或 az k8s-extension show 命令来检索的,因此会用于传入敏感设置。 在参数名称后面将值作为空格分隔 key=value 对传递。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings-file
--configuration-protected-settings-file JSON 文件的路径,该文件包含用于将敏感设置传入到扩展的键值对。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings
--scope 扩展的安装范围 - clusternamespace
--release-namespace 此参数指示要在其中创建版本的命名空间。 仅当 scope 参数设置为 cluster 时,此参数才有意义。
--release-train 扩展作者可以在不同的版本序列(例如 StablePreview 等)中发布版本。如果未显式设置此参数,则默认将使用 Stable。 当 autoUpgradeMinorVersion 参数设置为 false 时,不能使用此参数。
--target-namespace 此参数指示要在其中创建版本的命名空间。 为此扩展实例创建的系统帐户的权限将限于此命名空间。 仅当 scope 参数设置为 namespace 时,此参数才有意义。

显示扩展实例的详细信息

使用 k8s-extension show 并传入必需参数的值,查看当前已安装的扩展实例的详细信息:

az k8s-extension show --name azureml --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type managedClusters

列出群集上安装的所有扩展

使用 k8s-extension list 并传入必需参数的值,列出群集上安装的所有扩展。

az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type managedClusters

更新除扩展实例

注意

请参阅扩展类型(例如:Azure ML)的文档,以了解 ConfigurationSetting 和 ConfigurationProtectedSettings 下面的哪些特定设置可以进行更新。 对于 ConfigurationProtectedSettings,应在更新单个设置期间提供所有设置。 如果省略某些设置,这些设置将被视为已过时并被删除。

使用 k8s-extension update 并传入必需参数的值,从而更新现有的扩展实例。 以下命令将更新 Azure 机器学习扩展实例的自动升级设置:

az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type managedClusters

必需的参数

参数名称 说明
--name 扩展实例的名称
--extension-type 要在群集上安装的扩展类型。 例如:Microsoft.AzureML.Kubernetes
--cluster-name 必须在其中创建扩展实例的 AKS 群集的名称
--resource-group 包含 AKS 群集的资源组
--cluster-type 必须要在其上创建扩展实例的群集类型。 指定 managedClusters,因为其映射到 AKS 群集

可选参数

参数名称 说明
--auto-upgrade-minor-version 布尔值属性,指定是否要自动升级扩展的次要版本。 默认值:true。 如果此参数设置为 true,那么你不能设置 version 参数,因为版本将动态更新。 如果设置为 false,则不会自动升级扩展(即使对于补丁版本也是如此)。
--version 要安装的扩展版本(要将扩展实例固定到的特定版本)。 如果 auto-upgrade-minor-version 设置为 true,则不可提供此参数。
--configuration-settings 可传入到扩展以控制其功能的设置。 只需要提供需要更新的设置。 提供的设置将替换为提供的值。 在参数名称后面将值作为空格分隔 key=value 对传递。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings-file
--configuration-settings-file JSON 文件的路径,该文件包含用于将配置设置传入到扩展的键值对。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings
--configuration-protected-settings 这些设置是无法使用 GET API 调用或 az k8s-extension show 命令来检索的,因此会用于传入敏感设置。 更新设置时,应指定所有设置。 如果省略某些设置,这些设置将被视为已过时并被删除。 在参数名称后面将值作为空格分隔 key=value 对传递。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings-file
--configuration-protected-settings-file JSON 文件的路径,该文件包含用于将敏感设置传入到扩展的键值对。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings
--scope 扩展的安装范围 - clusternamespace
--release-train 扩展作者可以在不同的版本序列(例如 StablePreview 等)中发布版本。如果未显式设置此参数,则默认将使用 Stable。 当 autoUpgradeMinorVersion 参数设置为 false 时,不能使用此参数。

删除扩展实例

注意

代表此扩展的 Azure 资源将会立即删除。 仅当 Kubernetes 群集上运行的代理已建立网络连接,并且可以再次访问 Azure 服务以获取所需状态时,才会删除群集上与此扩展关联的 Helm 版本。

使用 k8s-extension delete 并传入必需参数的值,删除群集上的扩展实例。

az k8s-extension delete --name azureml --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type managedClusters