Profilanwendbarkeit: Stufe 1 - Worker-Knoten
Erlauben Sie Kubelet, iptables zu verwalten.
Kubelets können die erforderlichen Änderungen an iptables automatisch verwalten, basierend
auf den von Ihnen gewählten Netzwerkoptionen für die Pods. Es wird empfohlen, die
Verwaltung der Änderungen an iptables den Kubelets zu überlassen. Dies stellt sicher,
dass die iptables-Konfiguration mit der Netzwerk-Konfiguration der Pods synchron bleibt.
Eine manuelle Konfiguration von iptables bei dynamischen Änderungen der Pod-Netzwerkkonfiguration
könnte die Kommunikation zwischen Pods/Containern und zur Außenwelt beeinträchtigen.
Möglicherweise sind Ihre iptables-Regeln zu restriktiv oder zu offen.
Auswirkung
Kubelet würde die iptables auf dem System verwalten und synchron halten. Wenn Sie
eine andere iptables-Verwaltungslösung verwenden, kann es zu Konflikten kommen.
Prüfung
Prüfmethode 1:
HinweisZuerst SSH zu jedem Knoten: Führen Sie den folgenden Befehl auf jedem Knoten aus,
um den Kubelet-Prozess zu finden:
ps -ef | grep kubelet Wenn die Ausgabe des obigen Befehls das Argument
--make-iptables-util-chains enthält, überprüfen Sie, ob es auf true gesetzt ist. Wenn das Argument --make-iptables-util-chains nicht existiert und eine Kubelet-Konfigurationsdatei durch --config angegeben ist, überprüfen Sie, dass die Datei makeIPTablesUtilChains nicht auf false setzt. |
Prüfmethode 2:
Wenn Sie den API-Configz-Endpunkt verwenden, sollten Sie den Status von
authentication... "makeIPTablesUtilChains": true durch Extrahieren der Live-Konfiguration von den Knoten, die Kubelet ausführen, suchen.
Legen Sie den lokalen Proxy-Port und die folgenden Variablen fest und geben Sie die
Proxy-Portnummer und den Knotennamen an: HOSTNAME_PORT="localhost-and-port-number"
NODE_NAME="The-Name-Of-Node-To-Extract-Configuration" from the output of "kubectl get nodes"
kubectl proxy --port=8001 &
export HOSTNAME_PORT=localhost:8001 (example host and port number)
export NODE_NAME=ip-192.168.31.226.ec2.internal (example node name from "kubectl get nodes")
curl --SSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Wiederherstellung
Behebungsmethode 1:
-
Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie die
/etc/kubernetes/kubelet/kubelet-config.json-Datei und setzen Sie den untenstehenden Parameter auf true"makeIPTablesUtilChains": true -
Stellen Sie sicher, dass
/etc/systemd/system/kubelet.service.d/10-kubelet-args.confdas Argument--make-iptables-util-chainsnicht setzt, da dies Ihre Kubelet-Konfigurationsdatei überschreiben würde.
Sanierungsmethode 2:
-
Wenn ausführbare Argumente verwendet werden, bearbeiten Sie die Kubelet-Dienstdatei
/etc/systemd/system/kubelet.service.d/10-kubelet-args.confauf jedem Worker-Knoten und fügen Sie den untenstehenden Parameter am Ende der KUBELET_ARGS-Variablenzeichenfolge hinzu.--make-iptables-util-chains=true
Behebungsmethode 3:
-
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"makeIPTablesUtilChains": truezu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen.kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 (example host and port number) export NODE_NAME=ip-192.168.31.226.ec2.internal (example node name from "kubectl get nodes") curl --SSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Für alle drei Behebungen: Starten Sie basierend auf Ihrem System den Kubelet-Dienst
neu und überprüfen Sie den Status mit:
systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet -l
Standardwert
Siehe die Amazon EKS-Dokumentation für den Standardwert.
