Profilanwendbarkeit: Stufe 1 - Worker-Knoten
Diese Empfehlung betont die Bedeutung der Festlegung von Timeouts für Streaming-Verbindungen
zum Kubelet, um Risiken im Zusammenhang mit Denial-of-Service (DoS)-Angriffen, inaktiven
Verbindungen und der Erschöpfung von temporären Ports zu mindern. Eine ordnungsgemäße
Konfiguration dieser Timeouts gewährleistet den sicheren und effizienten Betrieb von
Netzwerkverbindungen.
Auswirkung
Langfristige Verbindungen könnten unterbrochen werden.
Prüfung
Prüfmethode 1:
![]() |
HinweisKubelets können über eine Konfigurationsdatei oder Befehlszeilenargumente konfiguriert
werden. Befehlszeilenargumente haben Vorrang. Überprüfen Sie sowohl die Befehlszeilenargumente
als auch die Einträge in der Konfigurationsdatei, wenn Sie Kubelet-Konfigurationen
prüfen.
|
-
SSH in jeden Knoten und führen Sie den folgenden Befehl aus, um Details des aktiven Kubelet-Prozesses anzuzeigen:
ps -ef | grep kubelet
-
Wenn die Befehlszeile für den Prozess das Argument
--streaming-connection-idle-timeout
enthält, überprüfen Sie, dass es nicht auf 0 gesetzt ist. Wenn das Argument--streaming-connection-idle-timeout
nicht vorhanden ist, beziehen Sie sich stattdessen auf das Argument--config
, das den Speicherort der Kubelet-Konfigurationsdatei angibt:cat /etc/kubernetes/kubelet/kubelet-config.json
-
Öffnen Sie die Kubelet-Konfigurationsdatei:
sudo less /path/to/kubelet-config.json
-
Überprüfen Sie, dass das Argument
streamingConnectionIdleTimeout
nicht auf 0 gesetzt ist.
Prüfmethode 2:
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"streamingConnectionIdleTimeout": "4h0m0s"
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet
ausführen.-
Legen Sie die lokale Proxy-Portnummer und die folgenden Variablen fest und geben Sie die Proxy-Portnummer und den Knotennamen an:
export HOSTNAME_PORT=localhost:8001 export NODE_NAME=my-node-name curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Wiederherstellung
Methode 1:
-
Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie die Datei
/etc/kubernetes/kubelet/kubelet-config.json
:{ "streamingConnectionIdleTimeout": "4h0m0s" }
-
Sie sollten sicherstellen, dass die Kubelet-Dienstdatei
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
kein--streaming-connection-idle-timeout
-Argument angibt, da dies die Kubelet-Konfigurationsdatei überschreiben würde. -
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
Methode 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 den untenstehenden Parameter am Ende der KUBELET_ARGS-Variablenzeichenfolge hinzu:--streaming-connection-idle-timeout=4h0m0s
-
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
Methode 3:
-
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
"streamingConnectionIdleTimeout"
zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen.kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 export NODE_NAME=ip-192.168.31.226.ec2.internal curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
-
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