Da NSX-OVS in der neuesten Kernelversion nicht unterstützt wird, können Sie das NSX-OVS-Kernelmodul auf das Upstream-OVS-Kernelmodul umstellen, bevor Sie den Kernel auf die neueste Version aktualisieren. Wenn NCP nach einem Kernel-Upgrade nicht mit dem neuesten Kernel funktioniert, können Sie ein Rollback durchführen (zurück zu NSX-OVS und Downgrade des Kernels).

Im ersten Verfahren unten wird beschrieben, wie Sie das NSX-OVS-Kernelmodul auf das Upstream-OVS-Kernelmodul umstellen, wenn Sie den Kernel aktualisieren. Das zweite Verfahren beschreibt, wie Sie beim Downgrade des Kernels wieder zum NSX-OVS-Kernelmodul wechseln.

Diese Verfahren umfassen die Kubernetes-Konzepte taints und tolerations. Weitere Informationen zu diesen Konzepten finden Sie unter https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration.

Zum Upstream-OVS-Kernelmodul wechseln

  1. Ändern Sie die tolerations von daemonset.apps/nsx-ncp-bootstrap und daemonset.apps/nsx-node-agent. Ändern Sie Folgendes:
          - effect: NoExecute
            operator: Exists
    bis:
          - effect: NoExecute
            key: evict-user-pods
  2. Ändern Sie die nsx-node-agent-Configmap. use_nsx_ovs_kernel_module in False ändern.
  3. Taint worker-node1 „evict-user-pods:NoExecute“, um alle Benutzer-Pods auf diesem Knoten auf andere Knoten zu verlagern:
    kubectl taint nodes worker-node1 evict-user-pods:NoExecute
  4. Taint worker-node1 „evict-ncp-pods:NoExecute“, um „nsx-node-agent“ und „nsx-ncp-bootstrap“-Pods auf diesem Knoten auf andere Knoten zu verlagern:
    kubectl taint nodes worker-node1 evict-ncp-pods:NoExecute
  5. Deinstallieren Sie das „ovs-kernel“-Modul und stellen Sie das Upstream-OVS-Kernelmodul auf „worker-node1“ wieder her.
    1. Löschen Sie die kmod-Dateien vport-geneve.ko, vport-gre.ko, vport-lisp.ko, vport-stt.ko, vport-vxlan.ko, openvswitch.ko im Verzeichnis /lib/modules/$(uname -r)/weak-updates/openvswitch.
    2. Wenn sich die Dateien vport-geneve.ko, vport-gre.ko, vport-lisp.ko, vport-stt.ko, vport-vxlan.ko, openvswitch.ko im Verzeichnis /lib/modules/$(uname -r)/nsx/usr-ovs-kmod-backup befinden, verschieben Sie sie in das Verzeichnis /lib/modules/$(uname -r)/weak-updates/openvswitch.
    3. Löschen Sie das Verzeichnis /lib/modules/$(uname -r)/nsx.
  6. Aktualisieren Sie den Kernel von „worker-node1“ auf die neueste Version und starten Sie ihn neu.

    Hinweis: Legen Sie für SELinux den Modus „Permissive“ auf „worker-node1“ fest, wenn „containerd“ und „kubelet“ nicht ausgeführt werden können.

  7. Starten Sie „kubelet“ neu.
  8. Entfernen Sie taint „evict-ncp-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass Bootstrap und „node-agent“ gestartet werden können.
  9. Entfernen Sie taint „evict-user-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass alle Pods in diesem Knoten ausgeführt werden.
  10. Wiederholen Sie die Schritte 3 bis 9 für andere Knoten.
  11. Stellen Sie tolerations der DaemonSets „nsx-ncp-bootstrap“ und „nsx-node-agent“ in Schritt 1 wieder her.

Zum NSX-OVS-Kernelmodul zurückwechseln

  1. Ändern Sie die tolerations von daemonset.apps/nsx-ncp-bootstrap und daemonset.apps/nsx-node-agent. Ändern Sie Folgendes:
          - effect: NoExecute
            operator: Exists
    bis:
          - effect: NoExecute
            key: evict-user-pods
  2. Ändern Sie die nsx-node-agent-Configmap. use_nsx_ovs_kernel_module in True ändern.
  3. Taint worker-node1 „evict-user-pods:NoExecute“, um alle Benutzer-Pods auf diesem Knoten auf andere Knoten zu verlagern:
    kubectl taint nodes worker-node1 evict-user-pods:NoExecute
  4. Taint worker-node1 „evict-ncp-pods:NoExecute“, um „nsx-node-agent“ und „nsx-ncp-bootstrap“-Pods auf diesem Knoten auf andere Knoten zu verlagern:
    kubectl taint nodes worker-node1 evict-ncp-pods:NoExecute
  5. Stufen Sie den Kernel von „worker-node1“ auf eine unterstützte Version herunter und starten Sie ihn neu.

    Hinweis: Legen Sie für SELinux den Modus „Permissive“ auf „worker-node1“ fest, wenn „containerd“ und „kubelet“ nicht ausgeführt werden können.

  6. Starten Sie „kubelet“ neu.
  7. Entfernen Sie taint „evict-ncp-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass Bootstrap und „node-agent“ gestartet werden können.
  8. Entfernen Sie taint „evict-user-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass alle Pods in diesem Knoten ausgeführt werden.
  9. Wiederholen Sie die Schritte 3 bis 8 für andere Knoten.
  10. Stellen Sie tolerations der DaemonSets „nsx-ncp-bootstrap“ und „nsx-node-agent“ in Schritt 1 wieder her.