Ansichten:
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:
Hinweis
Hinweis
Kubelets 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.
  1. SSH in jeden Knoten und führen Sie den folgenden Befehl aus, um Details des aktiven Kubelet-Prozesses anzuzeigen:
    ps -ef | grep kubelet
  2. 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
  3. Öffnen Sie die Kubelet-Konfigurationsdatei:
    sudo less /path/to/kubelet-config.json
  4. Ü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.
  1. 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:
  1. Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie die Datei /etc/kubernetes/kubelet/kubelet-config.json:
          {
          "streamingConnectionIdleTimeout": "4h0m0s"
          }
         
  2. 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.
  3. 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:
  1. 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
         
  2. 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:
  1. 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"
         
  2. 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