Richten Sie den NCP- und NSX-Knotenagent ein, und führen Sie ihn aus.

Prozedur

  1. Bearbeiten Sie roles/ncp/defaults/main.yaml, und geben Sie die IP-Adresse des OpenShift-API-Servers, die IP-Adresse von NSX Manager und die URLs zum Herunterladen der YAML-Datei für NCP ReplicationController und für DaemonSet für „nsx-node-agent“ an.
  2. Führen Sie im Verzeichnis „openshift-ansible-nsx“ ncp-Rolle aus:
        ansible-playbook -i /PATH/TO/HOSTS/hosts ncp.yaml

Ergebnisse

Die ncp-Rolle führt die folgenden Schritte aus:

  • Überprüfen Sie, ob das Projekt „nsx-system“ vorhanden ist, und erstellen Sie es, wenn dies nicht der Fall ist.

        oc new-project nsx-system
  • Laden Sie die YAML-Datei ncp-rbac herunter und ändern Sie apiVersion in v1.

  • Erstellen Sie das Dienstkonto für den NCP-Pod, erstellen Sie eine Clusterrolle, die die Ressourcen festlegt, auf die NCP zugreifen kann, und binden Sie die Clusterrolle an das NCP-Dienstkonto.

  • Erstellen Sie das Dienstkonto für den nsx-node-agent-Pod, erstellen Sie eine Clusterrolle, die die Ressourcen festlegt, auf die der Knotenagent zugreifen kann, und binden Sie die Clusterrolle an das Knotenagent-Dienstkonto.

        oc apply -f /tmp/ncp-rbac.yml
  • Rufen Sie das Token ab, das mit dem oben genannten Dienstkonto verknüpft ist, und speichern Sie es unter /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
  • Laden Sie die SecurityContextConstraint (SCC)-YAML-Datei ncp-os-scc.yml für NCP herunter und erstellen Sie das SCC-Objekt basierend auf der YAML-Datei.

        oc apply -f ncp-os-scc.yml

    In der SCC-YAML-Datei ist „spc_t“ als SELinux-Typ angegeben, um sicherzustellen, dass NCP/nsx-node-agent unter SELinux über Zugriffsberechtigungen verfügt. Dies sieht folgendermaßen aus:

        seLinuxContext:
          seLinuxOptions:
          type: spc_t

    Die auf Bezeichnungen basierende SELinux-Zugriffssteuerungsebene unter seLinuxOptions von seLinuxContext ist in der SCC-YAML-Datei auf s0:c0:c1023 festgelegt, damit ncp/node-agent auf Ziele aus anderen Dateikategorien zugreifen kann.

  • Fügen Sie das SCC-Objekt dem Benutzer hinzu, der die Pods der NCP- und NSX-Knotenagents erstellt. So fügen Sie beispielsweise das SCC-Objekt dem Standardbenutzer im aktuellen Projekt hinzu:

        oc adm policy add-scc-to-user ncp-scc -z default
  • Fügen Sie das SCC-Objekt den NCP- und NSX-Knotenagent-Dienstkonten hinzu:

        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
  • Laden Sie die YAML-Dateien für NCP ReplicationController (RC) und nsx-node-agent DaemonSet (DS) herunter und aktualisieren Sie die ConfigMap.

  • Laden Sie das NCP-Image herunter (nsx-node-agent verwendet dasselbe Image), und laden Sie es.

  • Konfigurieren Sie das Dienstkonto, und richten Sie das erforderliche SecurityContextConstraint-Objekt für NCP und nsx_node_agent ein.

  • Erstellen Sie den NCP ReplicationController und das nsx-node-agent DaemonSet.

Hinweis:

NCP öffnet dauerhafte HTTP-Verbindungen zum Kubernetes-API-Server, um Lebenszyklusereignisse von Kubernetes-Ressourcen zu überwachen. Wenn ein API-Serverausfall oder ein Netzwerkausfall dazu führt, dass TCP-Verbindungen von NCP verfallen, müssen Sie NCP neu starten, sodass es die Verbindungen zum API-Server wiederherstellen kann. Andernfalls verpasst NCP die neuen Ereignisse.