Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

System Upgrade Controller

Inhaltsverzeichnis

System Upgrade Controller
#

The Rancher System Upgrade Controller is a Kubernetes-native upgrade controller for nodes. It introduces a new Custom Resource Definition (CRD) called “Plan” to define upgrade policies, allowing for automated and controlled upgrades of Kubernetes clusters.

Deployment
#

Argo Deployment

Quelle
#

Dokumentation
#

Die Dokumentation für den Controller ist auf GitHub zu finden.

Funktion
#

Dieser Controller automatisiert die Aktualisierung des zugrundeliegenden Kubernetes-Systems (k3s). Er funktioniert, indem er Plan-Custom-Ressourcen überwacht. Ein Plan definiert, wie ein Upgrade durchgeführt werden soll, einschließlich:

  • Version: Die Zielversion von k3s.
  • Concurrency: Wie viele Nodes gleichzeitig aktualisiert werden dürfen.
  • Node Selector: Welche Nodes aktualisiert werden sollen (z.B. zuerst die Control-Plane, dann die Worker).
  • Upgrade-Befehl: Das Skript, das auf dem Node ausgeführt wird, um das Upgrade durchzuführen.

Wenn ein Plan im Cluster erstellt oder geändert wird, erstellt der Controller für jeden ausgewählten Node einen Job, der den Node sperrt (cordon), die Workloads darauf beendet (drain), das Upgrade-Skript ausführt und den Node anschließend wieder freigibt (uncordon).

Lokale Anpassungen
#

Die Konfiguration erfolgt über die values.yaml- und plans.yaml-Dateien.

Wichtige Einstellungen
#

  • plans.yaml: Diese Datei enthält die eigentlichen Upgrade-Pläne. Es gibt typischerweise separate Pläne für die Control-Plane-Nodes und die Worker-Nodes, um ein gestaffeltes Upgrade zu ermöglichen und die Cluster-Verfügbarkeit zu gewährleisten.
  • Tolerations: Der Controller-Pod hat Tolerations für CriticalAddonsOnly, um sicherzustellen, dass er auch auf dedizierten Control-Plane-Nodes laufen kann.

Installation
#

Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/system-upgrade-controller-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:

1kubectl kustomize --enable-helm apps/system-upgrade-controller | kubectl apply -n system-upgrade -f -

Abhängigkeiten
#

Der Controller ist eine eigenständige Anwendung, die tief in die Verwaltung des Kubernetes-Clusters eingreift. Er hat keine externen Anwendungsabhängigkeiten.

Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin