你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何使用运营商关系 Kubernetes 群集功能。 运营商关系 Kubernetes 群集是关系平台的一项功能,允许客户通过添加额外的包或功能来增强其关系 Kubernetes 群集。
先决条件
在继续执行本操作指南之前,建议:
- 有关全面概述和步骤,请参阅 Nexus Kubernetes 群集快速入门指南。
- 确保满足概述的先决条件,以确保指南的顺利实施。
networkcloud
az-cli 扩展版本所需的最低要求:2.0.b3
限制
- 只能创建、删除或更新“
Required
”字段设置为“False
”的 Kubernetes 群集功能。 - 首次安装 Kubernetes 群集功能时,该功能的名称应为表中列出的功能名称之一。 对于后续操作(如更新或删除),应使用
az networkcloud kubernetescluster feature list
命令获取该功能的名称。 - 如果在群集中使用水平 Pod 自动缩放程序 (HPA),则无法删除
metrics-server
功能。 - 如果在群集中使用相应 StorageClass,则无法删除与存储相关的 Kubernetes 群集功能,例如
csi-nfs
和csi-volume
。
默认配置
部署关系 Kubernetes 群集时,将自动安装所需的 Kubernetes 群集功能列表。 部署后,可以通过安装或卸载它们(从群集中删除它们)来管理可选的 Kubernetes 群集功能。
无法控制标记为“必需”的 Kubernetes 群集功能的安装。但是,对于“必需”字段设置为“False”的功能,你可以执行创建、更新和删除操作。你还可以选择通过更新命令更新任何 Kubernetes 群集功能。
以下 Kubernetes 群集功能可用于每个关系 Kubernetes 群集。 默认情况下,一律安装“必需”设置为“True”的功能,并且无法将其删除。
名称 | 说明 | 必须 | 默认安装 |
---|---|---|---|
azure-arc-k8sagents | Arc 连接关系 Kubernetes 群集 | True | True |
Calico | 提供容器网络接口 (CNI) 支持 | True | True |
cloud-provider-kubevirt | 支持群集 API (CAPI) KubeVirt 提供程序,用于管理 Kubernetes 中基于虚拟机的工作负载 | True | True |
ipam-cni-plugin | 将“ipamEnabled ”设置为 True 时,为连接到工作负载容器的第 3 层网络分配 IP 地址 |
True | True |
metallb | 为 LoadBalancer 服务提供外部 IP,以便对 Kubernetes 中的流量进行负载均衡 | True | True |
multus | 支持将多个网络接口附加到 Kubernetes Pod | True | True |
node-local-dns | 部署 NodeLocal DNSCache 以提高 Kubernetes 群集中的 DNS 性能和可靠性 | True | True |
sriov-dp | 为单根 I/O 虚拟化 (SR-IOV) 部署可选的 CNI 插件以提高网络性能 | True | True |
azure-arc-servers | 在每个控制平面和代理池节点上部署已启用 Azure Arc 的服务器,允许管理非 Azure 资源和 Azure 资源 | False | True |
csi-nfs | 为 NFS(网络文件系统)提供容器存储接口 (CSI) 驱动程序,以支持 Kubernetes 中基于 NFS 的存储 | False | True |
csi-volume | 支持适用于 Kubernetes 中永久性卷声明的 csi-nexus-volume 存储类 | False | True |
metrics-server | 部署指标服务器,该服务器为 Kubernetes 群集提供资源使用情况指标,例如 CPU 和内存使用情况 | False | True |
注意
- 对于每个群集,只能为每个 Kubernetes 群集功能类型创建一项功能。
- 如果删除了“必需”属性设置为“False”的 Kubernetes 群集功能,则会从群集中删除相关图表。
如何管理 Kubernetes 群集功能
以下交互允许创建和管理 Kubernetes 群集功能配置。
安装 Kubernetes 群集功能
若要在群集中安装 Kubernetes 群集功能,请使用 az networkcloud kubernetescluster feature create
命令。 如果有多个 Azure 订阅,则必须通过以下任一方法指定订阅 ID:在 CLI 命令中使用 --subscription
标志,或使用 az account set 命令来选择合适的订阅 ID。
az networkcloud kubernetescluster feature create \
--name "<FEATURE_NAME>" \
--kubernetes-cluster-name "<KUBERNETES_CLUSTER_NAME>" \
--resource-group "<RESOURCE_GROUP>" \
--___location "<LOCATION>" \
--tags "<KEY1>=<VALUE1>" "<KEY2>=<VALUE2>"
- 请将占位符(
<FEATURE_NAME>
、<KUBERNETES_CLUSTER_NAME>
、<RESOURCE_GROUP>
、<LOCATION>
、<KEY1>=<VALUE1>
和<KEY2>=<VALUE2>
)替换为你自己的信息。
若要查看所有可用参数及其说明,请运行以下命令:
az networkcloud kubernetescluster feature create --help
Kubernetes 群集功能配置参数
参数名称 | 说明 |
---|---|
FEATURE_NAME | Kubernetes 群集的名称 feature |
KUBERNETES_CLUSTER_NAME | 群集的名称 |
LOCATION | 在其中部署了群集的 Azure 区域 |
RESOURCE_GROUP | 群集资源组名称 |
KEY1 | 要传递给 Kubernetes 群集功能创建的可选标记 1 |
VALUE1 | 要传递给 Kubernetes 群集功能创建的可选标记 1 的值 |
KEY2 | 要传递给 Kubernetes 群集功能创建的可选标记 2 |
VALUE2 | 要传递给 Kubernetes 群集功能创建的可选标记 2 的值 |
在 az 命令中指定 --no-wait --debug
选项会导致异步执行此命令。 有关详细信息,请参阅如何跟踪异步操作。
列出 Kubernetes 群集功能
你可以使用 az networkcloud kubernetescluster feature list
命令检查特定群集的 Kubernetes 群集功能资源。 此命令会显示与指定 Kubernetes 群集关联的所有功能的列表:
az networkcloud kubernetescluster feature list \
--kubernetes-cluster-name "<KUBERNETES_CLUSTER_NAME>" \
--resource-group "<RESOURCE_GROUP>"
检索 Kubernetes 群集功能
创建 Kubernetes 群集后,可以使用 networkcloud kubernetescluster feature show
命令检查特定 Kubernetes 群集功能的详细信息。 这会提供有关该功能的详细信息。
az networkcloud kubernetescluster feature show \
--cluster-name "<KUBERNETES_CLUSTER_NAME>" \
--resource-group "<RESOURCE_GROUP>"
此命令会返回 Kubernetes 群集功能配置的 JSON 表示形式。
更新 Kubernetes 群集功能
与创建 Kubernetes 群集功能类似,你可以执行更新操作来修改分配给 Kubernetes 群集功能的标记。 使用以下命令更新标记:
重要
name
参数应与从az networkcloud kubernetescluster feature list
命令的输出中获取的“Name”匹配。 虽然最初可以使用安装期间提供的功能名称,但该功能安装完成后,会分配到唯一的名称。 因此,请始终使用list
命令获取用于更新和删除操作的实际资源名称,而不是依赖于表中显示的初始功能名称。
az networkcloud kubernetescluster feature update \
--name "<FEATURE_NAME>" \
--kubernetes-cluster-name "<KUBERNETES_CLUSTER_NAME>" \
--resource-group "<RESOURCE_GROUP>" \
--tags <KEY1>="<VALUE1>" \
<KEy2>="<VALUE2>"
在 az 命令中指定 --no-wait --debug
选项会导致异步执行此命令。 有关详细信息,请参阅如何跟踪异步操作。
删除 Kubernetes 群集功能
删除 Kubernetes 群集功能会从群集中删除资源。 若要删除 Kubernetes 群集功能,请使用以下命令:
重要
name
参数应与从az networkcloud kubernetescluster feature list
命令的输出中获取的“Name”匹配。 虽然最初可以使用安装期间提供的功能名称,但该功能安装完成后,会分配到唯一的名称。 因此,请始终使用list
命令获取用于更新和删除操作的实际资源名称,而不是依赖于表中显示的初始功能名称。
az networkcloud kubernetescluster feature delete \
--name "<FEATURE_NAME>" \
--kubernetes-cluster-name "<KUBERNETES_CLUSTER_NAME>" \
--resource-group "<RESOURCE_GROUP>"
在 az 命令中指定 --no-wait --debug
选项会导致异步执行此命令。 有关详细信息,请参阅如何跟踪异步操作。
注意
- 如果尝试删除具有
Required=True
的 Kubernetes 群集功能,该命令将会失败并生成一条错误消息,指出“不允许删除...功能,因为它是必需的功能。” - 在这种情况下,后续的 show/list 命令会将
provisioningState
显示为Failed
。 这是已知问题。 - 若要更正
provisioningState
,可以运行 no-op 命令,例如更新受影响 Kubernetes 群集功能上的标记。 使用更新命令的--tags
参数执行此操作。 此操作会将provisioningState
重置为Succeeded
。