NSX 節點代理程式是每個網繭用來執行兩個容器的 DaemonSet。一個容器會執行 NSX 節點代理程式,其主要工作是管理容器網路介面。它會與 CNI 外掛程式和 Kubernetes API 伺服器互動。另一個容器會執行 NSX kube-proxy,而其唯一的工作是將叢集 IP 轉譯為網繭 IP,以實作 Kubernetes 服務擷取。它會實作與上游 kube-proxy 相同的功能。

程序

  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
    • 針對 nsx-node-agent 容器和 nsx-kube-proxy 容器,在 securityContext 下方新增 privileged:true 一行。例如:
      securityContext:
          privileged:true
    備註: 目前的已知問題是,如果 kubelet 在使用 hyperkube 映像的容器內執行,則 kubelet 一律會將 AppArmor 報告為已停用狀態,無論實際狀態為何。您必須對 yaml 檔案進行如上所述的相同變更。
    備註: 在 yaml 檔案中,您必須指定為 ncp.ini 產生的 ConfigMap 必須掛接為「唯讀」磁碟區。下載的 yaml 檔案已具有此規格而不應變更。
  5. 使用下列命令建立 NSX 節點代理程式 DaemonSet。
        kubectl apply -f nsx-node-agent-ds.yml