Robuste Kubelet-Konfiguration

Bradley G Smith, Version F39,F40,F41 Last review: 2024-07-28

Diese Seite behandelt Softwarequellen von Drittanbietern, die nicht offiziell mit dem Fedora-Projekt verbunden sind oder von diesem unterstützt werden. Die Nutzung erfolgt auf eigene Verantwortung. Fedora empfiehlt die Verwendung freier und quelloffener Software und rät von patentgeschützter Software ab.

kubelet-Übersicht

Das kubelet ist der Kubernetes-Agent, der auf jedem Knoten eines Clusters ausgeführt wird. Das kubelet wird mithilfe des Kubernetes-RPMs installiert (z. B. ist kubernetes1.30 ein versioniertes RPM für Kubernetes v1.30). Unter Fedora läuft das kubelet als systemd-Dienst. In frühen Implementierungen wurde das kubelet über Flags konfiguriert, die in einer systemd-Unit-Datei festgelegt und als Befehlszeilenparameter an das kubelet übergeben wurden.

In neueren Versionen von kubelet sind diese Flags veraltet und werden zugunsten einer Konfigurationsdatei ersetzt, die entweder JSON oder YAML für die Konfigurationssyntax verwendet.

Die älteren RPM-Pakete ohne Versionsnummer verwenden standardmäßig Flags zur Konfiguration des kubelet. RPM-Pakete mit Versionsnummer nutzen die Methode über eine Konfigurationsdatei.

Sowohl bei versionierten als auch bei nicht versionierten RPM-Paketen können sämtliche Dateien – einschließlich derer, die sich auf systemd beziehen – während Versionsaktualisierungen (z. B. von Kubernetes 1.29 auf 1.30, also Nebenversion-Aktualisierungen) gelöscht werden. Wurden diese Dateien vom Benutzer verändert, besteht die Gefahr, dass nützliche oder wichtige Änderungen verloren gehen. Systemd bietet Optionen, die dazu beitragen, den Verlust knotenspezifischer Konfigurationen zu verhindern.

Systemd-Konfigurationsempfehlungen

Die Flags für das auf einem Node laufende kubelet werden in einer systemd-Unit-Datei festgelegt, wobei die jeweilige Datei davon abhängt, welche RPM-Pakete installiert sind.

Das Kubernetes-RPM (z. B. kubernetes1.30 für Version 1.30) installiert die Standard-systemd-Datei für kubelet unter:

/usr/lib/systemd/system/kubelet.service

Das kubernetes-kubeadm-RPM installiert eine kubelet-Unit-Datei, die die Standarddatei überschreibt, unter:

/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

Wir raten dringend davon ab, eine der beiden Dateien zu ändern, da jegliche Änderungen bei einer Aktualisierung verloren gehen könnten.

Erstellen Sie, wie vom Kubernetes-Team hier dokumentiert, das folgende Verzeichnis für benutzerdefinierte Systemd-Overrides für das kubelet auf Systemebene:

$ sudo mkdir -p /etc/systemd/system/kubelet.service.d/

Erstellen Sie anschließend eine Unit-Datei (die Dateiendung .conf ist erforderlich) und kopieren Sie diese in das oben genannte Verzeichnis. Die Einstellungen in dieser Datei haben Vorrang vor den Einstellungen in einer oder beiden der standardmäßigen systemd-Dateien.

Diese Datei wird von der Paketverwaltung des Systems nicht erfasst und bleibt bei Kubernetes-Versionsaktualisierungen unverändert. Stellen Sie sicher, dass eine Software-Versionsverwaltung und/oder ein Backup-Konzept vorhanden sind, um Datenverluste bei einer Fedora-Systemaktualisierung oder einem Systemabsturz zu vermeiden.

Empfehlungen für Konfigurationsdateien

Alle versionierten Kubernetes-RPMs verwenden standardmäßig eine kubelet-Konfigurationsdatei. Falls diese Datei nicht existiert, wird sie während der Cluster-Instanziierung erstellt. Der Standardspeicherort für die Konfigurationsdatei ist:

# default configuration file
$ /var/lib/kubelet/config.yaml

Diese Datei wird nicht von RPM verwaltet, so dass sie bei Kubernetes-Aktualisierungen erhalten bleibt.

Drop-in-Konfigurationsdatei

Kubernetes 1.30 und neuere Versionen verfügen über eine Option für Drop-in-Konfigurationsdateien, die standardmäßig nicht aktiviert ist. Definieren Sie in einer systemd-Datei einen Pfad mithilfe der Option --config-dir:

# define configdir
--config-dir=/etc/kubernetes/kubelet.conf.d

In der Online-Dokumentation finden Sie aktuelle Informationen, einschließlich einer Option zur Aktivierung dieser Funktion für v1.28 oder v1.29.

Reihenfolge der Zusammenführung von Konfigurationsdateien

Beim Start des kubelet werden die Konfigurationseinstellungen in der folgenden Reihenfolge zusammengeführt (Dokumentation zur Zusammenführungsreihenfolge):

  1. Über die Befehlszeile angegebene Feature-Gates (niedrigste Priorität).

  2. Die Kubelet-Konfiguration.

  3. Drop-in-Konfigurationsdateien, entsprechend der Sortierreihenfolge.

  4. Befehlszeilenargumente unter Ausschluss von Feature-Gates (höchste Priorität).