本文介绍如何使用 Nexus Kubernetes 群集功能。 Nexus Kubernetes 群集功能是 Nexus 平台的一项功能,客户可以通过添加额外的包或功能来增强其 Nexus Kubernetes 群集。
先决条件
在继续这个操作指南之前,建议您:
- 有关涉及的全面概述和步骤,请参阅 Nexus Kubernetes 群集 快速入门指南 。
- 确保满足概述的先决条件,以确保指南的顺利实施。
- 所需的 networkcloud最低 az-cli 扩展版本:2.0.b3
局限性
- 只能创建、删除或更新字段设置为Required的FalseKubernetes 群集功能。
- 首次安装 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 命令将显示 provisioningState为Failed. 这是一个已知问题。
- 若要更正 provisioningState,您可以运行 no-op 命令,例如更新受影响的 Kubernetes 集群功能上的标记。 使用 update 命令的--tags参数来实现此操作。 此作将重置provisioningState为Succeeded.