設定並執行 NCP 和 NSX 節點代理程式。

程序

  1. 編輯 roles/ncp/defaults/main.yaml,並指定 OpenShift API 伺服器 IP、NSX Manager IP,以及用來下載 NCP ReplicationController yaml 和 nsx-node-agent DaemonSet yaml 的 URL。
  2. 從 openshift-ansible-nsx 目錄執行 ncp 角色:
        ansible-playbook -i /PATH/TO/HOSTS/hosts ncp.yaml

結果

ncp 角色會執行下列步驟:

  • 檢查 nsx-system 專案是否存在,若不存在則加以建立。

        oc new-project nsx-system
  • 下載 ncp-rbac yaml 檔案,並將 apiVersion 變更為 v1

  • 為 NCP 網繭建立服務帳戶,然後建立指定 NCP 可存取資源的叢集角色,並將此叢集角色與 NCP 服務帳戶繫結。

  • nsx-node-agent 網繭建立服務帳戶,然後建立指定節點代理程式可存取資源的叢集角色,並將此叢集角色與節點代理程式服務帳戶繫結。

        oc apply -f /tmp/ncp-rbac.yml
  • 取得與上述服務帳戶相關聯的 Token,並將其儲存在 /etc/nsx-ujo/<service_account>_token 下:

        secret=`kubectl get serviceaccount ncp-svc-account -o yaml | grep -A1 secrets | tail -n1 | awk {'print $3'}`
        kubectl get secret $secret -o yaml | grep 'token:' | awk {'print $2'} | base64 -d > /etc/nsx-ujo/ncp_token
        secret=`kubectl get serviceaccount nsx-node-agent-svc-account -o yaml | grep -A1 secrets | tail -n1 | awk {'print $3'}`
        kubectl get secret $secret -o yaml | grep 'token:' | awk {'print $2'} | base64 -d > /etc/nsx-ujo/node_agent_token
  • 下載 NCP 的 SecurityContextConstraint (SCC) yaml 檔案 ncp-os-scc.yml,並根據 yaml 建立 SCC。

        oc apply -f ncp-os-scc.yml

    SCC yaml 檔案將 SELinux 類型指定為 spc_t,以確保 NCP/nsx-node-agent 具有 SELinux 下的存取權限。亦即,

        seLinuxContext:
          seLinuxOptions:
          type: spc_t

    在 SCC yaml 檔案中 seLinuxContextseLinuxOptions 下,SELinux 以標籤為基礎的存取控制層級設定為 s0:c0:c1023,可允許 ncp/node-agent 從不同的檔案類別存取目標。

  • 將 SCC 新增至建立 NCP 和 NSX 節點代理程式網繭的使用者。例如,將 SCC 新增至目前專案中的預設使用者:

        oc adm policy add-scc-to-user ncp-scc -z default
  • 將 SCC 新增至 NCP 和 NSX 節點代理程式服務帳戶:

        oc adm policy add-scc-to-user ncp-scc -z ncp-svc-account
        oc adm policy add-scc-to-user ncp-scc -z nsx-node-agent-svc-account
  • 下載 NCP ReplicationController (RC) 和 nsx-node-agent DaemonSet (DS) 的 yaml 檔案,並更新 ConfigMap。

  • 下載並載入 NCP 映像 (nsx-node-agent 會使用相同映像)。

  • 設定服務帳戶,並設定 NCP 和 nsx_node_agent 所需的 SecurityContextConstraint。

  • 建立 NCP ReplicationController 和 nsx-node-agent DaemonSet。

備註:

NCP 開啟與 Kubernetes API 伺服器的持續性 HTTP 連線,以監看 Kubernetes 資源的生命週期事件。如果 API 伺服器失敗或網路失敗導致 NCP 的 TCP 連線失效,您必須重新啟動 NCP,使其能夠重新建立與 API 伺服器的連線。否則,NCP 將會錯過新事件。