Profilanwendbarkeit: Stufe 1 - Worker-Knoten
Aktivieren Sie die Rotation des kubelet-Serverzertifikats, um eine kontinuierliche
Systemverfügbarkeit sicherzustellen und Ausfallzeiten durch abgelaufene Zertifikate
zu vermeiden. Die
RotateKubeletServerCertificate-Funktion automatisiert den Erneuerungsprozess, bei dem das kubelet sein Dienstzertifikat
anfordert und rotiert, sobald die vorhandenen Anmeldeinformationen ablaufen, und unterstützt
somit die Sicherheits-Triade CIA (Vertraulichkeit, Integrität und Verfügbarkeit).
Diese Funktion ist nur relevant, wenn die kubelets ihre Zertifikate vom API-Server
erhalten; wenn Zertifikate von einer externen Behörde oder einem Tool wie Vault ausgestellt
werden, müssen Sie den Rotationsprozess unabhängig verwalten.
HinweisDiese Empfehlung gilt nur, wenn Kubelets ihre Zertifikate vom API-Server erhalten.
Wenn Ihre Kubelet-Zertifikate von einer externen Behörde/einem externen Tool (z. B.
Vault) ausgestellt werden, müssen Sie die Rotation manuell implementieren.
|
Auswirkung
Das Aktivieren der Zertifikatsrotation vermeidet potenzielle Ausfallzeiten, die durch
abgelaufene Zertifikate verursacht werden, und gewährleistet somit die kontinuierliche
Verfügbarkeit und Zuverlässigkeit des Kubelet-Dienstes.
Prüfung
Prüfmethode 1:
-
SSH in jeden Knoten und führen Sie den folgenden Befehl aus, um den Kubelet-Prozess zu finden:
ps -ef | grep kubelet
-
Wenn die Befehlsausgabe das Argument
--rotate-kubelet-server-certificateenthält, überprüfen Sie, ob es auf "true" gesetzt ist. Wenn das Argument nicht vorhanden ist, überprüfen Sie die Kubelet-Konfigurationsdatei, die durch das Argument--configangegeben ist:cat /etc/kubernetes/kubelet/kubelet-config.json
-
Öffnen Sie die Kubelet-Konfigurationsdatei:
sudo less /path/to/kubelet-config.json
-
Überprüfen Sie, ob das Argument
RotateKubeletServerCertificateim AbschnittfeatureGatesvorhanden ist und auf true gesetzt ist.
Prüfmethode 2:
-
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
RotateKubeletServerCertificate:truezu suchen, indem Sie die Live-Konfiguration von den Knoten extrahieren, die Kubelet ausführen. Setzen Sie den lokalen Proxy-Port und die folgenden Variablen, indem Sie die Proxy-Portnummer und den Knotennamen angeben:kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 export NODE_NAME=The-Name-Of-Node-To-Extract-Configuration kubectl get nodes -
Führen Sie den folgenden Befehl aus:
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
Wiederherstellung
Bereinigungsmethode 1:
-
Wenn Sie die Kubelet-Konfigurationsdatei ändern, bearbeiten Sie die
/etc/kubernetes/kubelet/kubelet-config.json-Datei:{ "featureGates": { "RotateKubeletServerCertificate": true } } -
Stellen Sie sicher, dass die Kubelet-Dienstdatei
/etc/systemd/system/kubelet.service.d/10-kubelet-args.confdas Argument--rotate-kubelet-server-certificatenicht auf false setzt, 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.confauf jedem Worker-Knoten und fügen Sie am Ende der KUBELET_ARGS-Variablenzeichenfolge den folgenden Parameter hinzu:--rotate-kubelet-server-certificate=true
Behebungsmethode 3:
-
Wenn Sie den API-Configz-Endpunkt verwenden, ziehen Sie in Betracht, den Status von
RotateKubeletServerCertificatezu 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"
Für alle drei Behebungsmethoden:
Starten Sie den Kubelet-Dienst neu und überprüfen Sie den Status. Das folgende Beispiel
gilt für die Verwaltung von Diensten mit systemctl:
systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet -l
