Kubernetes Architektur

Überblick

Kubernetes ist ein Container-Orchestrierungssystem. Es besteht aus einem Control Plane und einer oder mehreren Worker Nodes.

Control Plane
├── kube-apiserver       (REST API – zentraler Einstiegspunkt)
├── etcd                 (verteilte Key-Value-Datenbank – Cluster-State)
├── kube-scheduler       (weist Pods Nodes zu)
└── kube-controller-manager (führt Controller aus)

Worker Node
├── kubelet              (startet/überwacht Pods auf dem Node)
├── kube-proxy           (Netzwerk-Regeln, Service-Routing)
└── Container Runtime    (containerd / runc)

Control Plane Komponenten

kube-apiserver – Alle Operationen (kubectl, Controller, Nodes) kommunizieren ausschließlich über die API. Zustandslos, horizontal skalierbar.

etcd – Speichert den gesamten Cluster-Zustand. Mindestens 3 Instanzen für Hochverfügbarkeit (Raft-Konsensus).

kube-scheduler – Beobachtet neue Pods ohne zugewiesenen Node und wählt den passenden Node anhand von Ressourcen, Affinitäten und Policies.

kube-controller-manager – Führt Controller-Loops aus (z.B. ReplicaSet-Controller, Node-Controller, Job-Controller).

Worker Node Komponenten

kubelet – Agent auf jedem Node. Empfängt PodSpecs vom API-Server und stellt sicher, dass die beschriebenen Container laufen.

kube-proxy – Implementiert Kubernetes Services auf Netzwerkebene (iptables / IPVS).

Container Runtime – k3s verwendet containerd mit runc. Docker ist seit Kubernetes 1.24 kein unterstützter Runtime-Endpunkt mehr.

kubectl Kommunikation

kubectl --> kube-apiserver --> etcd
                          --> kube-scheduler
                          --> kubelet (auf Worker Node)

Prozesse auf dem Node prüfen

ps aux | grep kube-apiserver
ps aux | grep etcd
ps aux | grep kubelet
ps aux | grep containerd
ps aux | grep kube-proxy