Ansichten:
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.
Standardmäßig ist --streaming-connection-idle-timeout auf 4 Stunden eingestellt, was für Ihre Umgebung möglicherweise zu hoch ist. Eine angemessene Einstellung würde zusätzlich sicherstellen, dass solche Streaming-Verbindungen nach dem Bedienen legitimer Anwendungsfälle beendet werden.
Hinweis
Hinweis
Siehe die Azure AKS-Dokumentation für den Standardwert.

Auswirkung

Langfristige Verbindungen könnten unterbrochen werden.

Prüfung

Audit Method 1
  1. SSH zum entsprechenden Knoten.
  2. 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 Argument streaming-connection-idle-timeout enthält, überprüfen Sie, dass es nicht auf 0 gesetzt ist.
  3. Wenn das Argument streaming-connection-idle-timeout nicht vorhanden ist, beziehen Sie sich auf das Konfigurationsargument, das den Speicherort der Kubelet-Konfigurationsdatei angibt. Öffnen Sie die Kubelet-Konfigurationsdatei:
    cat /etc/kubernetes/kubelet/kubelet-config.json
    Überprüfen Sie, dass das Argument streamingConnectionIdleTimeout nicht auf 0 gesetzt ist.
Audit Method 2
Wenn Sie den API-Configz-Endpunkt verwenden, suchen Sie nach dem Status von "streamingConnectionIdleTimeout":"4h0m0s", indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen.
  1. Legen Sie den lokalen Proxy-Port und die folgenden Variablen fest: HOSTNAME_PORT="localhost-und-port-nummer" NODE_NAME="Der-Name-Des-Nodes-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 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"
Stellen Sie sicher, dass die Kubelet-Dienstdatei /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf kein Argument --streaming-connection-idle-timeout angibt, da es die Kubelet-Konfigurationsdatei überschreiben würde.
Remediation 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:
--streaming-connection-idle-timeout=4h0m0s
Remediation Method 3
Wenn Sie den API-Configz-Endpunkt verwenden, suchen Sie nach dem Status von "streamingConnectionIdleTimeout":, 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 Node-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
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