In Kubernetes sind Ressourcentypen die grundlegenden Objekte, mit denen du den gewünschten Zustand deines Clusters beschreibst. Jede Ressource wird über die Kubernetes API definiert und ist in der Regel als YAML- oder JSON-Manifest angelegt. Sie beschreiben was im Cluster existieren soll (z. B. Pods, Services) und wie es konfiguriert ist.
Man unterscheidet dabei grob drei Kategorien:
- Workload-Ressourcen – beschreiben laufende Anwendungen und Jobs
- Beispiele:
- Pod (kleinste ausführbare Einheit, enthält Container)
- Deployment (verwaltet mehrere Pods, sorgt für Updates und Skalierung)
- StatefulSet (für zustandsbehaftete Anwendungen wie Datenbanken)
- DaemonSet, Job, CronJob
- Beispiele:
- Service & Networking-Ressourcen – regeln Erreichbarkeit und Kommunikation
- Beispiele:
- Service (stabile Netzwerkschnittstelle für Pods)
- Ingress / IngressRoute (HTTP/HTTPS-Routing von außen)
- Endpoint, NetworkPolicy
- Beispiele:
- Konfigurations- & Speicherressourcen – enthalten Einstellungen oder Daten
- Beispiele:
- ConfigMap (Konfigurationswerte als Key-Value)
- Secret (vertrauliche Daten, z. B. Passwörter, TLS-Zertifikate)
- PersistentVolume / PersistentVolumeClaim (persistente Speicherung)
- Beispiele:
Jede Ressource wird durch drei Kerninformationen definiert:
- apiVersion – API-Gruppe und Version, z. B.
apps/v1 - kind – der Ressourcentyp, z. B.
Deployment - metadata & spec – Name, Labels, Namespace und die gewünschte Konfiguration
Kubernetes sorgt mit dem Controller-Loop dafür, dass der tatsächliche Zustand der Ressourcen immer dem gewünschten Zustand entspricht – ganz gleich, ob es um Container, Netzwerke oder Speicher geht.