Die RuntimeClass ist ein Kubernetes-Objekt, das eine Container-Runtime-Konfiguration benennt. Über das Feld runtimeClassName in der Pod-Spezifikation wählt jeder Pod damit aus, mit welcher Runtime seine Container laufen — Standard ist meist runc über containerd, alternativ sind isolierte Runtimes wie gVisor oder Kata Containers möglich.
Wie es funktioniert
Eine RuntimeClass (API-Gruppe node.k8s.io/v1, stabil seit Kubernetes 1.20) besteht im Kern aus dem Feld handler: Es benennt die Runtime-Konfiguration, die die CRI-Implementierung (etwa containerd) für Pods dieser Klasse verwenden soll. Referenziert ein Pod die Klasse über runtimeClassName, löst der Kubelet das Feld auf. Existiert die Klasse nicht oder kennt die Runtime den Handler nicht, wechselt der Pod in den Zustand Failed.
Runtime pro Pod statt pro Cluster
Der Vorteil liegt in der Mischung: Ein Cluster kann Standard-Workloads mit runc betreiben und sensible Pods parallel mit einer härteren Runtime — etwa gVisor (Syscall-Interception im Userspace) oder Kata Containers (leichtgewichtige VM je Pod). So lässt sich Performance gegen Sicherheit abwägen, ohne mehrere Cluster zu betreiben. Auch die Container-Sicherheit gehört zur Laufzeit-Konfiguration: AppArmor-Profile schränken die Prozesse zusätzlich ein.
Einschränkungen
- Die Handler müssen auf allen Knoten des Clusters verfügbar sein; gleich benannte Handler gelten als äquivalent.
- Für heterogene Cluster lässt sich der RuntimeClass über das
scheduling-Feld (nodeSelector, tolerations) vorgeben, auf welche Knoten Pods dieser Klasse landen dürfen.
Verwandte Grundlagen: Container-Runtime, Kubernetes, kubectl-Befehle.