你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
部署并管理已启用 Azure Arc 的 Kubernetes 群集扩展
你可以在已启用 Arc 的 Kubernetes 群集中创建扩展实例,设置必需和可选的参数,包括与更新和配置相关的选项。 你还可以查看、列出、更新和删除扩展实例。
在开始之前,请阅读启用了 Arc 的 Kubernetes 群集扩展的概念概述,并查看当前可用扩展的列表。
先决条件
最新版本的 Azure CLI。
最新版本的
connectedk8s
和k8s-extension
Azure CLI 扩展。 运行以下命令安装这些扩展:az extension add --name connectedk8s az extension add --name k8s-extension
如果已安装
connectedk8s
和k8s-extension
扩展,请确保使用以下命令将其更新到最新版本:az extension update --name connectedk8s az extension update --name k8s-extension
一个现有的已启用 Azure Arc 的 Kubernetes 连接群集,其中至少包含一个操作系统和体系结构类型为
linux/amd64
的节点。 如果部署 Flux (GitOps),则可以在没有linux/amd64
节点的情况下使用基于 ARM64 的群集。
创建扩展实例
若要创建新的扩展实例,请使用 k8s-extension create
并传递必需参数的值。
此示例在已启用 Azure Arc 的 Kubernetes 群集上创建一个 Azure Monitor 容器见解扩展实例:
az k8s-extension create --name azuremonitor-containers --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
输出:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": null,
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
注意
服务无法将敏感信息保留 48 小时以上。 如果已启用 Azure Arc 的 Kubernetes 代理保持网络连接的时间不超过 48 小时,且无法确定是否要在群集上创建扩展,则扩展会转换为 Failed
状态。 一旦发生这种情况,就需要再次运行 k8s-extension create
以创建全新的扩展 Azure 资源。
Azure Monitor 容器见解是单一实例扩展(在每个群集上只需要一个)。 需要清理所有以前的 Azure Monitor 容器见解(不带扩展)Helm 图表安装,才能通过扩展安装同一组件。 在运行 az k8s-extension create
之前,请按照删除 Helm 图表中的说明进行操作。
必需的参数
使用 az k8s-extension create
创建扩展实例时,以下参数是必需的。
参数名称 | 说明 |
---|---|
--name |
扩展实例的名称 |
--extension-type |
要在群集上安装的扩展类型。 例如:Microsoft.AzureMonitor.Containers、microsoft.azuredefender.kubernetes |
--scope |
扩展的安装范围:cluster 或 namespace |
--cluster-name |
必须在其上创建扩展实例的已启用 Azure Arc 的 Kubernetes 资源的名称 |
--resource-group |
包含已启用 Azure Arc 的 Kubernetes 资源的资源组 |
--cluster-type |
必须要在其上创建扩展实例的群集类型。 对于大多数方案,请使用与已启用 Azure Arc 的 Kubernetes 群集对应的 connectedClusters 。 |
可选参数
根据方案的需要,使用这些可选参数中的一个或多个,以及必需的参数。
注意
可以通过将 auto-upgrade-minor-version
设置为 true
,将扩展实例自动升级到最新的次要版本和修补程序版本,或者,也可以改用 --version
参数手动设置扩展实例的版本。 建议启用次要版本和修补程序版本自动升级,以便始终获得最新的安全修补程序和功能。
由于主要版本升级可能包括中断性变更,因此不支持自动升级扩展实例的新主要版本。 可以选择何时手动将扩展程序实例升级到新的主要版本。
参数名称 | 说明 |
---|---|
--auto-upgrade-minor-version |
用于确定是否自动升级扩展次要版本的布尔属性。 默认设置为 true 。 如果此参数设置为 true ,则你不能设置 version 参数,因为版本将动态更新。 如果设置为 false ,则扩展不会自动升级,甚至包括其修补程序版本。 |
--version |
要安装的扩展版本(要将扩展实例固定到的特定版本)。 如果 auto-upgrade-minor-version 设置为 true ,则不得提供此参数。 |
--configuration-settings |
可传入到扩展以控制其功能的设置。 需在参数名称的后面以空格分隔的 key=value 对形式传入这些设置。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings-file 。 |
--configuration-settings-file |
包含 key=value 对的 JSON 文件的路径,该文件用于将配置设置传入扩展。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings 。 |
--configuration-protected-settings |
无法使用 GET API 调用或 az k8s-extension show 命令检索的设置。 通常用于传入敏感设置。 需在参数名称的后面以空格分隔的 key=value 对形式传入这些设置。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings-file 。 |
--configuration-protected-settings-file |
包含 key=value 对的 JSON 文件的路径,该文件用于将敏感设置传入扩展。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings 。 |
--release-namespace |
此参数指示要在其中创建版本的命名空间。 仅当 scope 设置为 cluster 时才相关。 |
--release-train |
扩展作者可以在不同的版本序列(例如 Stable 、Preview 等)中发布版本。如果未显式设置此参数,则默认将使用 Stable 。 |
--target-namespace |
指示要在其中创建版本的命名空间。 为此扩展实例创建的系统帐户的权限将限于此命名空间。 仅当 scope 设置为 namespace 时才相关。 |
显示扩展详细信息
若要查看当前安装的扩展实例的详细信息,请使用 k8s-extension show
并传入必需参数的值。
az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
输出:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Installed",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": "2021-04-02T12:13:49.636+00:00",
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
列出群集上安装的所有扩展
若要查看群集上安装的所有扩展的列表,请使用 k8s-extension list
并传入必需参数的值。
az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
输出:
[
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-15T02:26:03.5519523+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "Microsoft.AzureMonitor.Containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
"lastStatusTime": null,
"name": "myExtInstanceName",
"releaseTrain": "Stable",
"resourceGroup": "myRG",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName1"
}
},
"statuses": [],
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
},
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-02T00:41:16.8005159+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuredefender.kubernetes",
"id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
"lastStatusTime": null,
"name": "microsoft.azuredefender.kubernetes",
"releaseTrain": "Stable",
"resourceGroup": "myRg",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName2"
}
},
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
}
]
更新除扩展实例
注意
参阅特定扩展类型的文档,以了解 --configuration-settings
和 --configuration-protected-settings
中可更新的特定设置。 对于 --configuration-protected-settings
,应提供所有设置,即使只更新一个设置。 如果省略其中的任何一个设置,则会将这些设置视为已过时并将其删除。
若要更新现有的扩展实例,请使用 k8s-extension update
并传入必需参数和可选参数的值。 必需参数和可选参数与用于创建扩展实例的参数略有不同。
此示例将 Azure 机器学习扩展实例的 auto-upgrade-minor-version
设置更新为 true
:
az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters
要更新的必需参数
参数名称 | 说明 |
---|---|
--name |
扩展实例的名称 |
--cluster-name |
必须在其中创建扩展实例的群集的名称 |
--resource-group |
包含群集的资源组 |
--cluster-type |
必须要在其上创建扩展实例的群集类型。 对于已启用 Azure Arc 的 Kubernetes 群集,请使用 connectedClusters 。 对于 AKS 群集,请使用 managedClusters 。 |
要更新的可选参数
参数名称 | 说明 |
---|---|
--auto-upgrade-minor-version |
用于指定是否自动升级扩展次要版本的布尔属性。 默认设置为 true 。 如果此参数设置为 true,则你不能设置 version 参数,因为版本将动态更新。 如果设置为 false ,则扩展不会自动升级,甚至包括其修补程序版本。 |
--version |
要安装的扩展版本(要将扩展实例固定到的特定版本)。 如果 auto-upgrade-minor-version 设置为 true ,则不可提供此参数。 |
--configuration-settings |
可传入到扩展以控制其功能的设置。 需在参数名称的后面以空格分隔的 key=value 对形式传入这些设置。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings-file 。 只需要提供需要更新的设置。 提供的设置将替换为指定的值。 |
--configuration-settings-file |
包含 key=value 对的 JSON 文件的路径,该文件用于将配置设置传入扩展。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-settings 。 |
--configuration-protected-settings |
无法使用 GET API 调用或 az k8s-extension show 命令检索的设置。 通常用于传入敏感设置。 需在参数名称的后面以空格分隔的 key=value 对形式传入这些设置。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings-file 。 更新某个受保护设置时,应指定所有受保护设置。 如果省略其中的任何一个设置,则会将这些设置视为已过时并将其删除。 |
--configuration-protected-settings-file |
包含 key=value 对的 JSON 文件的路径,该文件用于将敏感设置传入扩展。 如果在命令中使用此参数,则不能在同一命令中使用 --configuration-protected-settings 。 |
--scope |
扩展的安装范围 - cluster 或 namespace 。 |
--release-train |
扩展作者可以在不同的版本序列(例如 Stable 、Preview 等)中发布版本。如果未显式设置此参数,则默认将使用 Stable 。 |
升级扩展实例
如前所述,如果将 auto-upgrade-minor-version
设置为 true,则在发布新的次要版本时,扩展将自动升级。 在大多数情况下,我们建议启用自动升级。 将 auto-upgrade-minor-version
设置为 false 后,如果你需要更新的版本,必须手动升级扩展。
此外,需要手动升级才能获得扩展的新主要实例。 你可以选择升级时间,以避免主要版本升级导致任何意外的中断性变更。
若要手动升级扩展实例,请使用 k8s-extension update
,并设置 version
参数以指定版本。
此示例将 Azure 机器学习扩展实例更新为版本 x.y.z:
az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z
删除扩展实例
若要删除群集上的扩展实例,请使用 k8s-extension delete
并传入必需参数的值:
az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
注意
代表此扩展的 Azure 资源将会立即删除。 仅当 Kubernetes 群集上运行的代理已建立网络连接,并且可以再次访问 Azure 服务以获取所需状态时,才会删除群集上与此扩展关联的 Helm 版本。
后续步骤
- 查看 az k8s-extension CLI 参考以获得完整的命令和参数列表。
- 详细了解扩展在已启用 Arc 的 Kubernetes 群集上的工作原理。
- 查看当前可用于已启用 Azure Arc 的 Kubernetes 的群集扩展。
- 获取有关解决扩展问题的帮助。