在 Nexus Kubernetes 群集中使用 Kubernetes 群集功能

本文介绍如何使用 Nexus Kubernetes 群集功能。 Nexus Kubernetes 群集功能是 Nexus 平台的一项功能,客户可以通过添加额外的包或功能来增强其 Nexus Kubernetes 群集。

先决条件

在继续这个操作指南之前,建议您:

  • 有关涉及的全面概述和步骤,请参阅 Nexus Kubernetes 群集 快速入门指南
  • 确保满足概述的先决条件,以确保指南的顺利实施。
  • 所需的 networkcloud 最低 az-cli 扩展版本: 2.0.b3

局限性

  • 只能创建、删除或更新字段设置为RequiredFalse Kubernetes 群集功能。
  • 首次安装 Kubernetes 群集功能时,该功能的名称应为表中列出的功能名称之一。 对于后续作(如更新或删除),应使用 az networkcloud kubernetescluster feature list 命令获取该功能的名称。
  • 如果在群集中使用水平 Pod 自动缩放程序(HPA),则无法删除metrics-server功能。
  • 如果相应的 StorageClass 在集群中使用,则无法删除 Kubernetes 集群中与存储相关的功能,例如csi-nfscsi-volume

默认配置

部署 Nexus Kubernetes 群集时,将自动安装所需的 Kubernetes 群集功能列表。 部署后,可以通过安装或卸载它们(从群集中删除它们)来管理可选的 Kubernetes 群集功能。

无法控制标记为“必需”的 Kubernetes 群集功能的安装。但是,可以对“必需”字段设置为“False”的功能执行创建、更新和删除作。还可以选择通过更新命令更新任何 Kubernetes 群集功能。

以下 Kubernetes 群集功能可用于每个 Nexus Kubernetes 群集。 默认情况下,标记为“必需”且设置为“True”的功能总是自动安装,并且无法被删除。

Name Description 必选 默认安装
azure-arc-k8sagents Arc 连接 Nexus Kubernetes 集群 True True
calico 提供容器网络接口(CNI)支持 True True
cloud-provider-kubevirt 支持 Cluster API (CAPI) KubeVirt 驱动程序,以管理 Kubernetes 中的虚拟机工作负载 True True
ipam-cni-plugin ipamEnabled 设置为 True 时,为连接到工作负荷容器的三层网络分配 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 资源 True
csi-nfs 为 NFS(网络文件系统)提供容器存储接口 (CSI) 驱动程序,以支持 Kubernetes 中基于 NFS 的存储 True
csi-volume 支持用于 Kubernetes 中持久卷声明的 csi-nexus-volume 存储类 True
metrics-server 部署指标服务器,该服务器为 Kubernetes 群集提供资源使用情况指标,例如 CPU 和内存使用情况 True

注释

  • 对于每个群集,只能创建每个 Kubernetes 群集功能类型的一项功能。
  • 如果删除了“必需”属性设置为“False”的 Kubernetes 群集功能,则会从群集中删除相关图表。

如何管理 Kubernetes 群集功能

以下交互允许创建和管理 Kubernetes 群集功能配置。

安装 Kubernetes 群集功能

若要在群集中安装 Kubernetes 群集功能,请使用 az networkcloud kubernetescluster feature create 命令。 如果有多个 Azure 订阅,则必须使用 --subscription CLI 命令中的标志或使用 az account set 命令选择相应的订阅 ID 来指定订阅 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 群集功能配置参数

参数名称 Description
功能名称 Kubernetes 群集的名称 feature
KUBERNETES_CLUSTER_NAME 群集的名称
位置 Azure 中部署群集的区域
RESOURCE_GROUP 群集资源组名称
KEY1 要传递给 Kubernetes 集群特性创建的可选 tag1
VALUE1 用于创建 Kubernetes 集群功能的可选 tag1 值
KEY2 要传递给 Kubernetes 群集功能创建的可选 tag2
VALUE2 要传递给 Kubernetes 集群特性创建的可选 "tag2" 值

--no-wait --debug az 命令中指定选项会导致异步执行此命令。 有关详细信息,请参阅如何跟踪异步操作

列出 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 群集后,可以使用命令检查特定 Kubernetes 群集功能 networkcloud kubernetescluster feature show 的详细信息。 这将提供有关该功能的详细信息:

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>"

--no-wait --debug az 命令中指定选项会导致异步执行此命令。 有关详细信息,请参阅如何跟踪异步操作

删除 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>"

--no-wait --debug az 命令中指定选项会导致异步执行此命令。 有关详细信息,请参阅如何跟踪异步操作

注释

  • 如果尝试删除具有 Required=True的 Kubernetes 群集功能,该命令将失败并生成一条错误消息,指出“不允许删除...功能,因为它是必需的功能。”
  • 在这种情况下,后续的 show/list 命令将显示 provisioningStateFailed. 这是一个已知问题。
  • 若要更正 provisioningState,您可以运行 no-op 命令,例如更新受影响的 Kubernetes 集群功能上的标记。 使用 update 命令的 --tags 参数来实现此操作。 此作将重置 provisioningStateSucceeded.