NSX Container Plug-in (NCP) 是作为 Docker 映像提供的。应在节点上运行 NCP 以提供基础架构服务。不建议在主节点上运行 NCP。

过程

  1. 下载 NCP Docker 映像。
    文件名是 nsx-ncp-xxxxxxx.tar,其中 xxxxxxx 是内部版本号。
  2. 下载 NCP ReplicationController yaml 模板。
    文件名是 ncp-rc.yml。您可以编辑该文件,或者将其作为您自己的模板文件的示例。
  3. 将 NCP Docker 映像加载到您的映像注册表中。
        docker load -i <tar file>
  4. (可选) 为 NSXError 对象的自定义资源定义下载 yaml 模板。
    文件名为 nsx-error-crd.yaml
  5. (可选) 创建自定义资源。
        kubectl create -f nsx-error-crd.yaml
  6. 编辑 ncp-rc.yml
    将映像名称更改为加载的映像。

    指定 nsx_api_managers 参数。可以指定单个 NSX Manager 的 IP 地址、NSX Manager 群集中三个 NSX Manager 的 IP 地址(以逗号分隔)或 NSX Manager 群集的虚拟 IP 地址。例如:

        nsx_api_managers = 192.168.1.180
    or
        nsx_api_managers = 192.168.1.181,192.168.1.182,192.168.1.183

    (可选)在 [nsx_v3] 部分中指定 ca_file 参数。该值应该是在验证 NSX Manager 服务器证书时使用的 CA 包文件。如果未设置,将使用系统根 CA。如果为 nsx_api_managers 指定一个 IP 地址,则指定一个 CA 文件。如果为 nsx_api_managers 指定三个 IP 地址,则可以指定一个或三个 CA 文件。如果指定一个 CA 文件,则该文件将用于所有三个管理器。如果指定三个 CA 文件,则每个文件将用于 nsx_api_managers 中对应的 IP 地址。例如,

        ca_file = ca_file_for_all_mgrs
    or
        ca_file = ca_file_for_mgr1,ca_file_for_mgr2,ca_file_for_mgr3

    指定 nsx_api_cert_filensx_api_private_key_file 参数以使用 NSX-T Data Center 进行身份验证。

    nsx_api_cert_file 是 PEM 格式的客户端证书文件的完整路径。该文件的内容应如下所示:

        -----BEGIN CERTIFICATE-----
        <certificate_data_base64_encoded>
        -----END CERTIFICATE-----

    nsx_api_private_key_file 是 PEM 格式的客户端私钥文件的完整路径。该文件的内容应如下所示:

        -----BEGIN PRIVATE KEY-----
        <private_key_data_base64_encoded>
        -----END PRIVATE KEY-----

    如果 Ingress 控制器配置为在 NAT 模式下运行,请指定 ingress_mode = nat 参数。

    默认情况下,子网前缀 24 用于从 pod 逻辑交换机的 IP 块中分配的所有子网。要使用不同的子网大小,请在 [nsx_v3] 部分中更新 subnet_prefix 选项。

    默认情况下,将启用 HA(高可用性)。可以使用以下规范禁用 HA:
    [ha]
    enable = False
    (可选)在 ncp.ini 中启用 NSXError 报告错误。默认情况下,将禁用此设置。
    [nsx_v3]
    enable_nsx_err_crd = True
    注: 在该 yaml 文件中,您必须指定为 ncp.ini 生成的 ConfigMap 应挂载为只读卷。下载的 yaml 文件已具有该规范,不应对其进行更改。
  7. 创建 NCP ReplicationController。
        kubectl create -f ncp-rc.yml

结果

注: NCP 打开与 Kubernetes API 服务器的持续 HTTP 连接,以监视 Kubernetes 资源的生命周期事件。如果 API 服务器故障或网络故障导致 NCP 的 TCP 连接失效,则必须重新启动 NCP,以便其可以重新建立与 API 服务器的连接。否则,NCP 将错过新事件。
滚动更新 NCP ReplicationController 期间,在以下情况下,滚动更新完成后可能会看到两个 NCP pod 正在运行:
  • 滚动更新期间重新引导容器主机。
  • 由于新的映像不存在于 Kubernetes 节点上,滚动更新最初失败。下载映像,然后重新运行滚动更新后成功。
如果看到两个 NCP pod 正在运行,请执行以下操作:
  • 删除其中一个 NCP pod。具体删除哪一个无关紧要。例如,
    kubectl delete pods <NCP pod name> -n nsx-system
  • 删除 NCP ReplicationController。例如,
    kubectl delete -f ncp-rc.yml -n nsx-system