如本文档所述,在向 NSX 注册 Antrea Kubernetes 集群之前,必须先完成多个必备任务。

可向单个 NSX 部署注册多个 Antrea Kubernetes 集群。

如果 Kubernetes 集群中的 VMware Container Networking™ with Antrea™ 版本为 1.8.0 或更高版本,请执行任务 1 至 6 以及任务 9。您可以跳过本文档中的任务 7 和 8。

如果 Kubernetes 集群中的 VMware Container Networking™ with Antrea™ 版本为 1.7.0 或更低版本,请执行任务 1 至 5 以及任务 7 至 9。任务 6 不适用。

任务 1:在 NSX 中添加相应的许可证

角色:NSX 管理员

NSX 环境必须具有授权系统使用网络功能的基本许可证和授权系统完全访问分布式防火墙功能的安全许可证。

要了解可用的基本许可证和安全许可证,请参见 许可证类型

任务 2:确保已为 Antrea-NSX Interworking 适配器打开所需端口

Antrea-NSX Interworking 适配器在 Antrea Kubernetes 集群中作为 Pod 运行,并且该 Pod 使用主机网络模式。可以调度该 Pod 以在任何 Kubernetes 节点上运行。因此,您必须确保 K8s 节点可以在 VMware Ports and Protocols 门户(位于 https://ports.esp.vmware.com/home/NSX)中提及的端口上访问 NSX IP 地址。

打开此链接后,在搜索文本框中输入 Antrea Interworking Pod

任务 3:部署 Antrea Kubernetes 集群

角色:Kubernetes 平台管理员

一个具有 Antrea 网络插件的 Kubernetes 集群必须已启动并准备就绪。

例如,要将 Tanzu Kubernetes Grid 实例中的集群与 NSX 集成到一起,请确保完成了以下任务:
  • 部署了 Tanzu 管理集群,并且这些集群处于运行状态。
  • 部署了 Tanzu Kubernetes 集群,并且这些集群处于运行状态。
  • 安装了 Tanzu 命令行界面 (Command Line Interface, CLI)。

有关这些任务的详细信息,请参见 Tanzu Kubernetes Grid 文档,网址为 https://docs.vmware.com/cn/VMware-Tanzu-Kubernetes-Grid/index.html

在部署管理集群时,将在管理集群中自动启用到 Antrea 的网络连接。

注: 还支持 networkPolicyOnly 模式下的 Antrea CNI。要了解更多信息,请参见 《VMware Container Networking with Antrea 安装指南》中的 在 networkPolicyOnly 模式下安装 VMware Container Networking with Antrea文档。

任务 4:确定 Kubernetes 集群中的 Antrea 版本

角色:Kubernetes 平台管理员

必须先确定 Kubernetes 集群中的 Antrea 开源版本,然后再下载 Antrea-NSX interworking 文件 (antrea-interworking-version.zip),这是本主题中的下一个必备条件。

重要说明: 每个 VMware Container Networking™ with Antrea™ 版本基于一个 Antrea 开源版本。 Antrea- NSX interworking 版本与同一 VMware Container Networking 版本中的 Antrea 开源软件版本兼容。

例如,请参见下表。

下表并不是所有 VMware Container Networking 版本和 Antrea-NSX Interworking 版本的完整列表。如需了解完整列表,请参见位于 https://docs.vmware.com/cn/VMware-Container-Networking-with-Antrea/index.htmlVMware Container Networking™ with Antrea™ 发行说明。

VMware Container Networking 版本 基于 Antrea OSS 版本 Antrea-NSX Interworking 版本兼容

v1.5.0

请参见:v1.5.0 发行说明

v1.7.1

v0.7。*

v1.4.0

请参见:v1.4.0 发行说明

v1.5.2

v0.5。*

v1.3.1

请参见:v1.3.1-1.2.3 发行说明

v1.2.3

v0.2.*

要确定 Kubernetes 集群中的 Antrea 开源版本,请执行以下步骤:
  1. 查找 Antrea 控制器 Pod 名称。Kubernetes 使用随机字符串生成此名称,因此,您可以从 K8s 集群中获取该名称。

    例如:

    $ kubectl get pod -n kube-system -l component=antrea-controller
    NAME                                 READY   STATUS    RESTARTS   AGE
    antrea-controller-6b8cb7cd59-wcjvd   1/1     Running   0          13d

    在此命令输出中,Antrea 控制器 Pod 名称为 antrea-controller-6b8cb7cd59-wcjvd

  2. 通过运行以下命令检索 Antrea 开源版本:
    $ kubectl exec -it antrea-controller-6b8cb7cd59-wcjvd -n kube-system -- antctl version
    antctlVersion: v1.7.1-cacafc0
    controllerVersion: v1.7.1-cacafc0

    在此命令输出中,v1.7.1 是要确定的 Antrea 开源版本。

任务 5:下载 Antrea-NSX Interworking Zip 文件

角色:Kubernetes 平台管理员

完成以下步骤以下载 antrea-interworking-version.zip 文件:
  1. 打开 Broadcom 支持门户上的我的下载页面。
  2. 从右上角,单击选择 Broadcom 分区菜单。,然后选择 VMware Cloud Foundation

    我的下载”页面仅显示您有权下载的 SKU。

  3. 单击 VMware Antrea,然后单击 VMware Antrea Enterprise
  4. 单击与您相关的 VMware Container Networking with Antrea 版本。此时将打开“主下载”选项卡。
  5. 在此选项卡页面上搜索 VMware Container Networking with Antrea、NSX Interworking 适配器映像和部署清单文件名。
  6. 确认文件名下提及的 antrea-interworking-version.zip 文件的版本与您之前确定的 Antrea 开源软件版本兼容。

    例如:


    Antrea 开源软件版本显示在文件名下方。
  7. 选中我同意 Broadcom 条款和条件 复选框。
  8. 单击下载图标。
提取 ZIP 文件。它包含以下文件。
文件名 描述
interworking.yaml 这是一个 YAML 部署清单文件,用于向 NSX 注册 Antrea Kubernetes 集群。
bootstrap-config.yaml 这是一个 YAML 文件,您可以在其中指定以下详细信息以进行注册:Antrea Kubernetes 集群名称、NSX Manager IP 地址、Kubernetes 集群的 TLS 证书以及 Kubernetes 集群的私钥。
bin/antreansxctl Antrea-NSX 命令行实用程序。此实用程序在 VMware Container Networking 版本 1.7.0 或更高版本的 antrea-interworking.zip 文件中提供。
deregisterjob.yaml 这是一个 YAML 清单文件,用于从 NSX 中取消注册 Antrea Kubernetes 集群。
ns-label-webhook.yaml 用于自动向新创建的 Kubernetes 命名空间添加标签的 Webhook 定义。仅当 Kubernetes 版本低于或等于 1.20 时,才会使用此 YAML 文件。
interworking-version.tar 管理平面适配器中央控制平面适配器的容器映像的存档文件。

任务 6:运行 antreansxctl bootstrap 命令

角色:NSX 管理员

如果 Kubernetes 集群中的 VMware Container Networking™ with Antrea™ 版本为 1.8.0 或更高版本,则可以运行 antreansxctl bootstrap 命令以在注册过程中自动执行以下必备任务:
  • 创建自签名证书
  • 创建主体身份 (PI) 用户
  • 创建引导配置 (bootstrap-config.yaml)
    注: 嵌入在 antreansxctl 命令行实用程序中的 bootstrap-config.yaml 模板与当前 interworking 版本兼容。命令行实用程序不依赖于 antrea-interworking.zip 文件中的 bootstrap-config.yaml 文件来运行。

要运行 antreansxctl bootstrap 命令,请使用 antreansxctl 命令行实用程序。您可以在之前下载的 antrea-interworking.zip 文件中找到此实用程序。

antreansxctl 实用程序是仅适用于 Linux 的可执行文件。因此,您需要使用 Linux 计算机运行此实用程序。

要了解 antreansxctl bootstrap 命令及其各种配置选项的用法,请参见《VMware Container Networking with Antrea 安装指南》中的 antreansxctl 命令行文档。

任务 7:创建自签名安全证书

角色:NSX 管理员

需要使用自签名安全证书以在 NSX 中创建主体身份用户帐户,将在本主题后面介绍该过程。

使用 OpenSSL 命令,为要向 NSX 注册的每个 Antrea Kubernetes 集群各创建一个自签名安全证书。

例如,假定您要为名为 cluster-sales 的 Antrea Kubernetes 集群创建一个长度为 2048 位的自签名 OpenSSL 证书。以下 OpenSSL 命令为该集群生成私钥文件、证书签名请求文件和自签名证书文件。

openssl genrsa -out cluster-sales-private.key 2048
openssl req -new -key cluster-sales-private.key -out cluster-sales.csr -subj "/C=US/ST=CA/L=Palo Alto/O=VMware/OU=Antrea Cluster/CN=cluster-sales"
openssl x509 -req -days 3650 -sha256 -in cluster-sales.csr -signkey cluster-sales-private.key -out cluster-sales.crt
注: 在用于创建 .csr 文件的 openssl req 命令中,确保每个 Antrea Kubernetes 集群的通用名称 (CN) 是不同的。

任务 8:创建主体身份用户

角色:NSX 管理员

管理平面适配器中央控制平面适配器使用主体身份 (PI) 用户帐户在 NSX Manager 中进行身份验证,并将自身标识为主体身份。PI 用户拥有这些适配器报告的清单资源。NSX 禁止其他用户意外覆盖这些清单资源。

每个 Antrea Kubernetes 集群都需要不同的 PI 用户。集群名称必须在 NSX 中唯一。证书通用名称和 PI 用户名必须与集群名称相同。NSX 不支持在集群之间共享证书和 PI 用户。

NSX 中创建一个主体身份用户,该用户具有您在上一步中创建的自签名证书。为该主体身份用户分配企业管理员角色。

要创建主体身份用户,请执行以下操作:
  1. NSX Manager UI 中,单击系统选项卡。
  2. 设置下,导航到用户管理 > 用户角色分配
  3. 单击添加 > 主体身份和角色
  4. 输入主体身份用户的名称。例如,输入 cluster-sales
    重要说明: 确保为 NSX 主体身份用户、证书 CN 以及 bootstrap-config.yaml 文件中的 clusterName 参数指定相同的名称。

    有关 bootstrap 配置文件的更多信息,请参见编辑引导配置文件

  5. 选择企业管理员以作为角色。
  6. 节点 ID 文本框中,输入 Antrea Kubernetes 集群的名称。对于向 NSX 注册的所有 Kubernetes 集群,该名称必须是唯一的。例如,输入 cluster-sales
  7. 证书 PEM 文本区域中,粘贴您以前创建的完整自签名证书。确保将 -----BEGIN CERTIFICATE---- 和 ------END CERTIFICATE----- 行也粘贴在该文本框中。
  8. 单击保存
  9. 从左侧导航窗格中,在设置下面单击证书。验证是否显示了 Antrea Kubernetes 集群的自签名证书。

任务 9:将容器映像导入到容器注册表

角色:Kubernetes 平台管理员

可以使用两种方法完成该必备任务。

方法 1(建议):从 VMware Harbor Registry中提取映像

VMware 在 VMware Harbor Registry 上托管了一些容器映像。

映像位置如下所示:
  • projects.registry.vmware.com/antreainterworking/interworking-debian:version
  • projects.registry.vmware.com/antreainterworking/interworking-ubuntu:version
  • projects.registry.vmware.com/antreainterworking/interworking-photon:version

有关版本信息,请参见 VMware Container Networking with Antrea 发行说明 (https://docs.vmware.com/cn/VMware-Container-Networking-with-Antrea/index.html)。

在所选的任何文本编辑器中打开 interworking.yamlderegisterjob.yaml 文件,并将所有映像 URL 替换为这些映像位置中的任一映像位置。

这种方法的优点是,在将 .yaml 文件提交到 Kubernetes API 服务器以注册集群时,Kubernetes 可以自动从 VMware Harbor Registry 中提取容器映像。

方法 2:手动将映像复制到 Kubernetes 工作节点和控制平面节点

如果 Kubernetes 基础架构未连接到 Internet 或连接速度太慢,请使用该手动方法。

interworking-version.tar 文件中提取容器映像,并将其复制到要向 NSX 注册的每个 Antrea Kubernetes 集群的 Kubernetes 工作节点和控制平面节点。

例如,在 Tanzu CLI 中,为每个 Kubernetes 工作节点 IP 和控制平面节点 IP 运行以下命令以复制 .tar.yaml 文件:
scp -o StrictHostKeyChecking=no interworking* capv@{node-ip}:/home/capv

将映像导入到本地 Kubernetes 注册表,该注册表是由容器运行时引擎管理的。或者,如果您的组织具有专用容器注册表,您可以将容器映像导入到该专用容器注册表中。

例如,在 Tanzu CLI 中,为每个 Kubernetes 工作节点 IP 和控制平面节点 IP 运行以下命令,以将容器映像导入到本地 Kubernetes 注册表中:

ssh capv@{node-ip} sudo ctr -n=k8s.io i import interworking-{version-id}.tar

要在配置了 NAT 的 vSphere with Tanzu 环境中使用此方法,必须在跳转主机虚拟机上运行 SCP 和 SSH 命令以连接到 Tanzu Kubernetes 集群节点。要了解有关创建 Linux 跳转主机虚拟机以及设置与集群节点的 SSH 连接的更多信息,请参见 vSphere with Tanzu 文档,网址为 https://docs.vmware.com/cn/VMware-vSphere/index.html