NSX 节点代理是一个 DaemonSet,每个 pod 将在其中运行两个容器。一个容器运行 NSX 节点代理,其主要职责是管理容器网络接口。它与 CNI 插件和 Kubernetes API 服务器进行交互。另一个容器运行 NSX Kube 代理,其唯一的职责是将群集 IP 转换为 pod IP 以实施 Kubernetes 服务抽象。它实施与上游 Kube 代理相同的功能。

过程

  1. 下载 NCP Docker 映像。
    文件名是 nsx-ncp-xxxxxxx.tar,其中 xxxxxxx 是内部版本号。
  2. 下载 NSX 节点代理 DaemonSet yaml 模板。
    文件名是 nsx-node-agent-ds.yml。您可以编辑该文件,或者将其作为您自己的模板文件的示例。
  3. 将 NCP Docker 映像加载到您的映像注册表中。
        docker load -i <tar file>
  4. 编辑 nsx-node-agent-ds.yml
    将映像名称更改为加载的映像。

    对于 Ubuntu,该 yaml 文件假定已启用 AppArmor。要查看是否启用了 AppArmor,请检查 /sys/module/apparmor/parameters/enabled 文件。如果未启用 AppArmor,请进行以下更改:

    • 删除或取消注释以下行:
      container.apparmor.security.beta.kubernetes.io/nsx-node-agent: localhost/node-agent-apparmor
    • securityContext 下面,为 nsx-node-agent 容器和 nsx-kube-proxy 容器添加 privileged:true 行。例如:
      securityContext:
          privileged:true
    注: 存在一个已知问题:如果在使用 hyperkube 映像的容器中运行 kubelet,kubelet 始终将 AppArmor 报告为已禁用,而无论实际处于何种状态。您必须对该 yaml 文件进行上述的相同更改。
    注: 在该 yaml 文件中,您必须指定为 ncp.ini 生成的 ConfigMap 必须挂载为只读卷。下载的 yaml 文件已具有该规范,不应对其进行更改。
  5. 使用以下命令创建 NSX 节点代理 DaemonSet。
        kubectl apply -f nsx-node-agent-ds.yml