Versionierte Kubernetes-RPMs auf Fedora

Bradley G Smith, Version F41,rawhide Last review: 2025-09-10

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.

Überblick

Versionierte Kubernetes-RPMs (z. B. kubernetes1.34.rpm, kubernetes1.33.rpm) wurden in Fedora 41 eingeführt und stellen den Standard für Kubernetes in allen Fedora-Versionen dar.

Da RPM-Pakete mit Versionsnummern eigenständige Pakete sind, die denselben Satz an Dateien enthalten, werden sie von RPM als in Konflikt stehend behandelt. Die für den Umgang mit diesem Konflikt erforderlichen Änderungen am Paketaktualisierungsprozess sind nachfolgend dokumentiert.

Einschränkungen der Go-Sprache

Jede Kubernetes-Version (auf der Nebenversion-Ebene, z. B. Kubernetes v1.31) wird mit einer bestimmten Version der Programmiersprache Go erstellt. Jede Fedora-Veröffentlichung ist an eine bestimmte Go-Version gekoppelt; so ist beispielsweise Go 1.22 unter Fedora 40 und Go 1.23 unter Fedora 41 verfügbar.

Eine neue Kubernetes-Version wird möglicherweise mit einer Go-Version erstellt, die auf älteren Fedora-Veröffentlichungen nicht verfügbar ist, wodurch die Paketierung dieser Kubernetes-Version für die betreffende Fedora-Veröffentlichung verhindert wird. Sobald die Go-Version aktualisiert wird, steht auch die zuvor blockierte Kubernetes-Version zur Verfügung – vorausgesetzt, sie wird noch unterstützt.

Kubernetes-RPMs in Fedora

Die folgende Tabelle listet die für jedes Kubernetes-Release verfügbaren Kubernetes-RPMs auf, beschreibt deren Inhalt und enthält Hinweise zum Verwendungszweck sowie zu etwaigen Vorsichtsmaßnahmen oder Einschränkungen.

Tabelle 1. Versionierte Kubernetes-RPMs in Fedora 41 (und neuer)
RPM-Name Inhalt Anmerkungen

kubernetes

kubelet

Kubelet ist die Kubernetes-Laufzeitumgebung auf einem Node.

kubernetes-kubeadm

kubeadm

Kubeadm initialisiert einen Cluster und fügt neue Knoten hinzu. Dieses RPM-Paket ist optional, wird aber vom Kubernetes-Team empfohlen. Installieren Sie es auf jedem Knoten, falls es verwendet wird.

kubernetes-client

kubectl

Kubernetes-Befehlszeilenclient. Dies wird für jeden Knoten empfohlen, der als Control Plane konfiguriert ist, da es dem Cluster-Administrator ermöglicht, den Cluster über eine SSH-Sitzung auf der Control Plane zu steuern. Installieren Sie es auf einem Rechner, der über das Netzwerk eine Verbindung zum Cluster herstellen kann.

kubernetes-systemd

kube-apiserver, kube-controller-manager, kube-proxy, kube-scheduler

Systemd-Dienste für eine Kubernetes control-plane und/oder Knoten. Bei den meisten Installationen nicht erforderlich, da kubeadm diese Komponenten als statische Pods installiert. Falls sie verwendet werden, müssen sie auf allen Knoten installiert werden. Verwenden Sie systemctl, um kube-proxy auf allen Knoten zu aktivieren. Aktivieren Sie kube-apiserver, kube-controller-manager und kube-scheduler auf den Control-Plane-Knoten.

Empfehlungen zur Installation versionierter RPMs

Für die meisten modernen Kubernetes-Cluster installieren Sie auf jeder Maschine im Cluster die Pakete kubernetes, kubernetes-kubeadm und kubernetes-client. Falls der Speicherplatz auf der Festplatte begrenzt ist, installieren Sie kubernetes-client nur auf den Control-Plane-Maschinen.

# kubernetes 1.34 wird als Beispiel verwendet
$ sudo dnf install kubernetes1.34 kubernetes1.34-kubeadm kubernetes1.34-client

Falls Sie eine manuelle Installation von Kubernetes durchführen (siehe Kubernetes The Hard Way), installieren Sie alle Kubernetes-RPMs mit Ausnahme von kubernetes-kubeadm.

# kubernetes 1.34 wird als Beispiel verwendet
$ sudo dnf install kubernetes1.34 kubernetes1.34-client kubernetes1.34-systemd

Empfehlungen zur Aktualisierung versionierter RPMs

Da rpm kubernetes1.34 als eine andere Anwendung als kubernetes1.31 behandelt, obwohl beide RPM-Pakete dieselben Dateien an denselben Speicherorten installieren, stehen diese Pakete in Konflikt zueinander; ein herkömmlicher dnf update-Befehl kann daher v1.34 nicht durch v1.31 ersetzen. Bei der Verwendung von dnf stehen zwei Optionen zur Verfügung: Entfernen/Installieren oder „Swap“ (Austausch).

Die Abfolge von Deinstallation und Installation erfolgt mithilfe regulärer dnf-Befehle, um zunächst eine Kubernetes-Version zu entfernen und diese anschließend durch die nächste Version zu ersetzen. Beide dnf-Befehle entfernen bzw. installieren dabei auch sämtliche Abhängigkeiten.

Wichtiger Hinweis – Dies ist nur beim Wechsel der Nebenversion erforderlich, also etwa beim Ersetzen von v1.34 durch v1.31. Für Aktualisierungen auf Patch-Ebene, wie beispielsweise von v1.34.2 auf v1.34.3, wird der normale Befehl dnf update verwendet.

# Entfernen und Ersetzen mit kubernetes 1.34 und 1.31 als Beispiel
$ sudo dnf remove kubernetes1.34 kubernetes1.34-kubeadm kubernetes1.34-client
$ sudo dnf install kubernetes1.31 kubernetes1.31-kubeadm kubernetes1.31-client

Der Befehl dnf swap kann auch verwendet werden, um von einer Kubernetes-Version zur nächsten zu wechseln. Durch die Verwendung von swap wird eine Neuinstallation der Abhängigkeiten vermieden; allerdings installiert die dnf-Paketangabe kubernetes1.31* alle passenden RPMs aus der Paketquelle – und nicht nur jene RPMs, die durch die ursprüngliche Angabe kubernetes1.34* entfernt wurden.

# Entfernen und Ersetzen mit kubernetes 1.34 und 1.31 als Beispiel
$ sudo dnf swap kubernetes1.34* kubernetes1.31*

Regeln zur Stillegung versionierter RPMs

Das Kubernetes-Projekt veröffentlicht alle vier Monate eine neue (Neben-)Version, die anschließend 1 Jahr lang unterstützt wird.

Patches für jede Nebenversion werden monatlich veröffentlicht.

Zwei Monate nachdem eine Kubernetes-Version das Ende ihres Lebenszyklus (End-of-Life) erreicht hat, wird das entsprechende RPM-Paket in Rawhide gemäß dem Prozess zum Stilllegen von Paketen ausgemustert. Auch die Pakete für die entsprechenden Versionen von CRI-O und CRI-Tools werden ausgemustert.