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
- Ä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
- Ändern Sie die nsx-node-agent-Configmap. use_nsx_ovs_kernel_module in
False
ändern. - 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
- 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
- Deinstallieren Sie das „ovs-kernel“-Modul und stellen Sie das Upstream-OVS-Kernelmodul auf „worker-node1“ wieder her.
- 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.
- 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.
- Löschen Sie das Verzeichnis /lib/modules/$(uname -r)/nsx.
- 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.
- Starten Sie „kubelet“ neu.
- Entfernen Sie taint „evict-ncp-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass Bootstrap und „node-agent“ gestartet werden können.
- Entfernen Sie taint „evict-user-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass alle Pods in diesem Knoten ausgeführt werden.
- Wiederholen Sie die Schritte 3 bis 9 für andere Knoten.
- Stellen Sie tolerations der DaemonSets „nsx-ncp-bootstrap“ und „nsx-node-agent“ in Schritt 1 wieder her.
Zum NSX-OVS-Kernelmodul zurückwechseln
- Ä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
- Ändern Sie die nsx-node-agent-Configmap. use_nsx_ovs_kernel_module in
True
ändern. - 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
- 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
- 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.
- Starten Sie „kubelet“ neu.
- Entfernen Sie taint „evict-ncp-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass Bootstrap und „node-agent“ gestartet werden können.
- Entfernen Sie taint „evict-user-pods:NoExecute“ aus Work-node1. Stellen Sie sicher, dass alle Pods in diesem Knoten ausgeführt werden.
- Wiederholen Sie die Schritte 3 bis 8 für andere Knoten.
- Stellen Sie tolerations der DaemonSets „nsx-ncp-bootstrap“ und „nsx-node-agent“ in Schritt 1 wieder her.