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

使用 Azure CLI 部署和管理群集扩展

你可以在 AKS 群集中创建扩展实例,设置必需和可选的参数,包括与更新和配置相关的选项。 你还可以查看、列出、更新和删除扩展实例。

开始之前,请阅读有关群集扩展的内容。

注意

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

先决条件

  • Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户

  • 必须在订阅中注册 Microsoft.ContainerServiceMicrosoft.KubernetesConfiguration 资源提供程序。 若要注册这些提供程序,请运行以下命令:

    az provider register --namespace Microsoft.ContainerService --wait 
    az provider register --namespace Microsoft.KubernetesConfiguration --wait 
    
  • AKS 群集。 必须事先使用托管标识创建此群集,因为群集扩展不适用于基于服务主体的群集。 对于使用 az aks create 创建的新集群,默认将配置托管标识。 对于现有的基于服务主体的群集,请切换到运行带 --enable-managed-identity 标志的 az aks update 以管理标识。 有关详细信息,请参阅使用托管标识

  • 已安装的 Azure CLI 版本不低于 2.16.0。 建议使用最新版本。

  • 最新版本的 k8s-extension Azure CLI 扩展。 通过运行以下命令来安装此扩展:

    az extension add --name k8s-extension
    

    如果已安装扩展,请确保使用以下命令运行最新版本:

    az extension update --name k8s-extension
    

创建扩展实例

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

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

此示例命令将在 AKS 群集上创建示例 Kubernetes 应用程序(在市场上发布):

az k8s-extension create --name voteapp --extension-type Contoso.AzureVoteKubernetesAppTest --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type managedClusters --plan-name testPlanID --plan-product testOfferID --plan-publisher testPublisherID --configuration-settings title=VoteAnimal value1=Cats value2=Dogs

注意

群集扩展服务无法将敏感信息保留 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。 当 --auto-upgrade-minor-version 参数设置为 false 时,不能使用此参数。
--target-namespace 此参数指示要在其中创建版本的命名空间。 为此扩展实例创建的系统帐户的权限将限于此命名空间。 仅当 scope 参数设置为 namespace 时,此参数才有意义。
--plan-name 扩展的“计划 ID”,位于 Azure 门户中“市场”页上的“使用情况信息 + 支持”下。
--plan-product 扩展的“产品 ID”,位于 Azure 门户中“市场”页上的“使用情况信息 + 支持”下。 使用的 ISV 产品/服务的名称就是这方面的一个示例。
--plan-publisher 扩展的“发布者 ID”,位于 Azure 门户中“市场”页上的“使用情况信息 + 支持”下。

显示扩展实例的详细信息

若要查看当前安装的扩展实例的详细信息,请使用 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

更新除扩展实例

注意

参阅特定扩展类型的文档,以了解 --configuration-settings--configuration-protected-settings 中可更新的特定设置。 对于 --configuration-protected-settings,应提供所有设置,即使只更新一个设置。 如果省略其中的任何一个设置,则会将这些设置视为已过时并将其删除。

若要更新现有的扩展实例,请使用 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 群集

如果更新通过市场购买的 Kubernetes 应用程序,则还需要以下参数:

参数名称 说明
--plan-name 扩展的“计划 ID”,位于 Azure 门户中“市场”页上的“使用情况信息 + 支持”下。
--plan-product 扩展的“产品 ID”,位于 Azure 门户中“市场”页上的“使用情况信息 + 支持”下。 使用的 ISV 产品/服务的名称就是这方面的一个示例。
--plan-publisher 扩展的“发布者 ID”,位于 Azure 门户中“市场”页上的“使用情况信息 + 支持”下。

要更新的可选参数

参数名称 说明
--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 时,不能使用此参数。

删除扩展实例

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

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

注意

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

后续步骤