Profilanwendbarkeit: Stufe 1
Deaktivieren Sie keine Timeouts bei Streaming-Verbindungen.
Das Festlegen von Leerlauf-Timeouts stellt sicher, dass Sie vor Denial-of-Service-Angriffen,
inaktiven Verbindungen und dem Ausgehen von temporären Ports geschützt sind.
HinweisStandardmäßig ist
--streaming-connection-idle-timeout auf 4 Stunden eingestellt, was für Ihre Umgebung möglicherweise zu hoch ist. Eine
entsprechende Anpassung dieser Einstellung würde zusätzlich sicherstellen, dass solche
Streaming-Verbindungen nach der Bedienung legitimer Anwendungsfälle ablaufen. |
HinweisWeitere Informationen zum Standardwert finden Sie in der Dokumentation des EKS.
|
Auswirkung
Langfristige Verbindungen könnten unterbrochen werden.
Prüfung
Prüfmethode 1:
-
SSH zum entsprechenden Knoten.
-
Führen Sie den folgenden Befehl auf jedem Knoten aus, um den laufenden Kubelet-Prozess zu finden:
ps -ef | grep kubelet
Wenn die Befehlszeile für den Prozess das Argumentstreaming-connection-idle-timeoutenthält, überprüfen Sie, dass es nicht auf 0 gesetzt ist. -
Wenn das Argument
streaming-connection-idle-timeoutnicht in der Ausgabe vorhanden ist, beziehen Sie sich stattdessen auf das Konfigurationsargument, das den Speicherort der Kubelet-Konfigurationsdatei angibt, z. B.--config /etc/kubernetes/kubelet/kubelet-config.json. -
Öffnen Sie die Kubelet-Konfigurationsdatei:
cat /etc/kubernetes/kubelet/kubelet-config.json
Überprüfen Sie, dass das ArgumentstreamingConnectionIdleTimeoutnicht auf 0 gesetzt ist.
Prüfmethode 2:
Wenn Sie den api configz Endpunkt verwenden, ziehen Sie in Betracht, nach dem 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:
HOSTNAME_PORT="localhost-und-portnummer" NODE_NAME="Der-Name-Des-Knotens-Zur-Konfigurationsausgabe"
aus der Ausgabe von "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 Datei kubelet-config.json
/etc/kubernetes/kubelet/kubelet-config.json und setzen Sie den untenstehenden Parameter auf einen Wert ungleich Null im Format
#h#m#s:"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.Behebungsmethode 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 untenstehenden Parameter hinzu.--streaming-connection-idle-timeout=4h0m0s
Behebungsmethode 3:
Wenn Sie den API-Configz-Endpunkt verwenden, sollten Sie in Betracht ziehen, den Status
von
"streamingConnectionIdleTimeout": zu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet
ausführen.Siehe detaillierte Schritt-für-Schritt-Anweisungen zur ConfigMap in Rekonfigurieren eines Knoten-Kubelets in einem 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 (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:systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
