Profilanwendbarkeit: Stufe 1 - Worker-Knoten
Aktivieren Sie die Rotation des kubelet-Serverzertifikats, um die kontinuierliche
Systemverfügbarkeit sicherzustellen und Ausfallzeiten durch abgelaufene Zertifikate
zu vermeiden. Die
RotateKubeletServerCertificate-Funktion automatisiert den Erneuerungsprozess, indem der kubelet sein Dienstzertifikat
anfordert und rotiert, sobald die vorhandenen Anmeldeinformationen ablaufen, und unterstützt
somit die CIA-Sicherheitstriade (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 eigenständig verwalten.
HinweisDiese Empfehlung ist nur anwendbar, wenn Kubelets ihre Zertifikate vom API-Server
erhalten. Wenn Ihre Kubelet-Zertifikate von einer externen Behörde/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 so 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 die lokale Proxy-Portnummer 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 folgenden Befehl aus:
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
/etc/kubernetes/kubelet/kubelet-config.json:{ "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 den untenstehenden Parameter am Ende der KUBELET_ARGS-Variablenzeichenfolge 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
