Der NSX-Knotenagent ist ein DaemonSet, wobei von jedem Pod zwei Container ausgeführt werden. Ein Container führt den NSX-Knotenagent aus, der hauptsächlich für die Verwaltung der Container-Netzwerkschnittstellen zuständig ist. Er interagiert mit dem CNI-Plugin und dem Kubernetes-API-Server. Der andere Container führt den NSX-Kube-Proxy aus, der lediglich der Implementierung der Kubernetes-Dienstabstraktion dient, indem Cluster-IP-Adressen in Pod-IP-Adressen übersetzt werden. Er implementiert dieselbe Funktionalität wie der vorgeschaltete Kube-Proxy.

Prozedur

  1. Laden Sie das NCP-Docker-Image herunter.
    Der Dateiname lautet nsx-ncp-xxxxxxx.tar, wobei xxxxxxx der Build-Nummer entspricht.
  2. Laden Sie die YAML-Datei für das DaemonSet des NSX-Knotenagents herunter.
    Der Dateiname ist nsx-node-agent-ds.yml. Sie können diese Datei bearbeiten oder als Beispiel für Ihre eigene Vorlagendatei verwenden.
  3. Laden Sie das NCP-Docker-Image in Ihre Image-Registrierung.
        docker load -i <tar file>
  4. Bearbeiten Sie nsx-node-agent-ds.yml.
    Ändern Sie den Image-Namen in den Namen der geladenen Datei.

    Für Ubuntu geht die YAML-Datei davon aus, dass AppArmor aktiviert ist. Um zu prüfen, ob AppArmor aktiviert ist, überprüfen Sie die Datei /sys/module/apparmor/parameters/enabled. Wenn AppArmor nicht aktiviert ist, nehmen Sie die folgenden Änderungen vor:

    • Löschen Sie die folgende Zeile, oder kommentieren Sie sie aus:
      container.apparmor.security.beta.kubernetes.io/nsx-node-agent: localhost/node-agent-apparmor
    • Fügen Sie die Zeile privileged:true unter securityContext für die Container „nsx-node-agent“ und „nsx-kube-proxy“ hinzu. Beispiel:
      securityContext:
          privileged:true
    Hinweis: Folgendes Problem ist bekannt: Wenn Kubelet innerhalb eines Containers ausgeführt wird, das das Hyperkube-Image verwendet, meldet Kubelet AppArmor unabhängig vom Ist-Zustand immer als deaktiviert. Sie müssen Sie dieselben oben genannten Änderungen an der YAML-Datei vornehmen.
    Hinweis: In der YAML-Datei müssen Sie angeben, dass das für ncp.ini generierte ConfigMap-Objekt als ReadOnly-Volume bereitgestellt werden muss. Die heruntergeladene YAML-Datei weist bereits diese Spezifikation auf, die nicht geändert werden sollte.
  5. Erstellen Sie das NSX-Knotenagent-DaemonSet mit dem folgenden Befehl.
        kubectl apply -f nsx-node-agent-ds.yml