Profilanwendbarkeit: Stufe 1
Erlauben Sie Kubelet, iptables zu verwalten.
Kubelets können die erforderlichen Änderungen an iptables automatisch verwalten, basierend
darauf, wie Sie Ihre Netzwerkoptionen für die Pods auswählen. 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.
HinweisSiehe die Azure AKS-Dokumentation für den Standardwert.
|
Auswirkung
Kubelet würde die iptables auf dem System verwalten und sie synchron halten. Wenn
Sie eine andere iptables-Verwaltungslösung verwenden, kann es zu Konflikten kommen.
Prüfung
Audit Method 1Wenn eine Kubelet-Konfigurationsdatei verwendet wird, überprüfen Sie, ob ein Eintrag
für
makeIPTablesUtilChains auf true gesetzt ist.-
SSH zum entsprechenden Knoten.
-
Führen Sie den folgenden Befehl auf jedem Knoten aus, um die entsprechende Kubelet-Konfigurationsdatei zu finden:
ps -ef | grep kubelet
Die Ausgabe sollte etwas Ähnliches wie--config /etc/kubernetes/kubelet/kubelet-config.jsonzurückgeben, was den Speicherort der Kubelet-Konfigurationsdatei darstellt. -
Öffnen Sie die Kubelet-Konfigurationsdatei:
cat /etc/kubernetes/kubelet/kubelet-config.json
-
Überprüfen Sie, ob das Argument
makeIPTablesUtilChainsexistiert und auftruegesetzt ist.Wenn das Argument--make-iptables-util-chainsnicht existiert und eine Kubelet-Konfigurationsdatei durch--configangegeben ist, überprüfen Sie, dass die DateimakeIPTablesUtilChainsnicht auffalsesetzt.
Wenn Sie den API-Configz-Endpunkt verwenden, suchen Sie nach dem Status von
"makeIPTablesUtilChains":true, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen.Setzen Sie die lokale Proxy-Portnummer und die folgenden Variablen und geben Sie die
Proxy-Portnummer und den Knotennamen an:
HOSTNAME_PORT="localhost-und-Portnummer" NODE_NAME="Der-Name-des-Knotens-zur-Konfigurationsextraktion"
aus der Ausgabe von "kubectl get nodes"kubectl proxy --port=8001 &
export HOSTNAME_PORT=localhost:8001
export NODE_NAME=ip-192.168.31.226.aks.internal
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Wiederherstellung
Remediation Method 1Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie die Datei
kubelet-config.json /etc/kubernetes/kubelet/kubelet-config.json und setzen Sie den folgenden Parameter:"makeIPTablesUtilChains": trueRemediation Method 2
Wenn ausführbare Argumente verwendet werden, bearbeiten Sie die kubelet-Dienstdatei
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf auf jedem Worker-Knoten und fügen Sie am Ende der KUBELET_ARGS-Variablenzeichenfolge
den folgenden Parameter hinzu:--make-iptables-util-chains:trueRemediation Method 3
Wenn Sie den API-Configz-Endpunkt verwenden, suchen Sie nach dem Status von
"makeIPTablesUtilChains": true, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen.
Siehe detaillierte Schritt-für-Schritt-Anweisungen zur ConfigMap in Reconfigure a
Node's Kubelet in a Live Cluster und führen Sie dann die Curl-Anweisung aus dem Audit-Prozess
erneut aus, um Änderungen an der Kubelet-Konfiguration zu überprüfen:kubectl proxy --port=8001 &
export HOSTNAME_PORT=localhost:8001
export NODE_NAME=ip-192.168.31.226.aks.internal
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
For all three remediations: Basierend auf Ihrem System, starten Sie den Kubelet-Dienst neu und überprüfen Sie
den Status:
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
