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

在 Azure 运营商关系 Kubernetes 群集中使用Kubernetes 群集功能

本文介绍如何使用运营商关系 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-nfscsi-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