可以在 AKS 群集中创建扩展实例,设置必需参数和可选参数,包括与更新和配置相关的选项。 还可以查看、列出、更新和删除扩展实例。
在开始之前,请阅读 群集扩展。
注释
本文中提供的示例不完整,仅用于展示功能。 有关命令及其参数的完整列表,请参阅 az k8s-extension CLI 参考。
先决条件
一份 Azure 订阅。 如果你没有 Azure 订阅,可以创建一个试用版订阅。
必须在您的订阅中注册
Microsoft.ContainerService和Microsoft.KubernetesConfiguration资源提供程序。 若要注册这些提供程序,请运行以下命令:az provider register --namespace Microsoft.ContainerService --wait az provider register --namespace Microsoft.KubernetesConfiguration --wait一个 AKS 群集。 此群集必须使用托管标识创建,因为群集扩展不适用于基于服务主体的群集。 对于使用
az aks create创建的新群集,默认将配置托管标识。 对于基于服务主体的现有群集,请运行az aks update并使用--enable-managed-identity参数来切换到托管标识。 有关详细信息,请参阅使用托管标识。Azure CLI 版本 >= 2.16.0 已安装。 建议使用最新版本。
最新版本的
k8s-extensionAzure 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 才能创建一个新的扩展实例。
必需的参数
| 参数名称 | Description |
|---|---|
--name |
扩展实例的名称 |
--extension-type |
要在群集上安装的扩展类型。 例如:Microsoft.AzureML.Kubernetes |
--cluster-name |
必须在其中创建扩展实例的 AKS 群集的名称 |
--resource-group |
包含 AKS 群集的资源组 |
--cluster-type |
用于创建扩展实例的群集类型。 指定 managedClusters 为映射到 AKS 群集 |
可选参数
| 参数名称 | Description |
|---|---|
--auto-upgrade-minor-version |
布尔类型的属性,指定扩展次要版本是否会自动升级。 默认值:true。 如果此参数设置为 true,则无法设置 version 参数,因为版本将动态更新。 如果设置为 false,则即使是修补程序版本,扩展也不会自动升级。 |
--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 |
扩展的安装范围 - cluster 或 namespace |
--release-namespace |
此参数指示要在其中创建发布的命名空间。 仅当scope参数设置为cluster时,此参数才相关。 |
--release-train |
扩展作者可以在不同的发布训练中发布版本,例如 Stable, Preview等等。如果未显式设置此参数, Stable 则用作默认值。 如果 --auto-upgrade-minor-version 参数设置为 false.,则不能使用此参数。 |
--target-namespace |
此参数指示将在其中创建发布的命名空间。 为此扩展实例创建的系统帐户的权限将仅限于此命名空间。 仅当 scope 参数设置为 namespace 时,此参数才相关。 |
--plan-name |
扩展计划的ID,可以在 Azure 门户的“Marketplace 页”的“使用情况信息 + 支持”部分找到。 |
--plan-product |
可以在 Azure 门户的“市场”页面的“使用情况信息 + 支持”下找到扩展的产品 ID。 使用的 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
更新所需的参数
| 参数名称 | Description |
|---|---|
--name |
扩展实例的名称 |
--extension-type |
要在群集上安装的扩展类型。 例如:Microsoft.AzureML.Kubernetes |
--cluster-name |
必须在其中创建扩展实例的 AKS 群集的名称 |
--resource-group |
包含 AKS 群集的资源组 |
--cluster-type |
用于创建扩展实例的群集类型。 指定 managedClusters 为映射到 AKS 群集 |
如果更新通过市场采购的 Kubernetes 应用程序,则还需要以下参数:
| 参数名称 | Description |
|---|---|
--plan-name |
扩展程序的计划 ID,可以在 Azure 门户的“市场”页面下的“使用情况信息 + 支持”中找到。 |
--plan-product |
在 Azure 门户的“使用情况信息 + 支持”下的“市场”页上可以找到扩展的 产品 ID。 使用的 ISV 产品/服务的名称就是这方面的一个示例。 |
--plan-publisher |
扩展的发布者 ID,在 Azure 门户中的“使用情况信息 + 支持”下的“市场”页上找到。 |
用于更新的可选参数
| 参数名称 | Description |
|---|---|
--auto-upgrade-minor-version |
布尔类型的属性,指定扩展次要版本是否会自动升级。 默认值:true。 如果此参数设置为 true,则无法设置 version 参数,因为版本将动态更新。 如果设置为 false,则即使是修补程序版本,扩展也不会自动升级。 |
--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 |
扩展的安装范围 - cluster 或 namespace |
--release-train |
扩展作者可以在不同的发布训练中发布版本,例如 Stable, Preview等等。如果未显式设置此参数, 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 版本。
后续步骤
- 查看 当前可用的群集扩展的列表。