Wie können wir helfen?
Kubernetes PriorityClasses
Was sind PriorityClasses?
PriorityClasses werden von Kubernetes genutzt um die Priorität von Pods zu definieren. Jede Klasse hat einen eigenen Wert. Je höher dieser ist, desto wichtiger sind die Pods.
Je nach Definition der Klassen werden diese entweder priorisiert durch den Kubernetes Scheduler behandelt oder dürfen sogar niedriger priorisierte Pods beenden um zu starten. Sie werden relevant wenn im Cluster, z.B. durch einen Node Ausfall, zu wenig Ressourcen für alle Pods vorhanden sind.
Kubernetes bringt bereits zwei Klassen mit:
- system-cluster-critical
- system-node-critical
Diese Klassen haben die höchsten Prioritäten und werden für Cluster kritische Pods, wie CoreDNS und Storage (LocalPath oder Ceph), verwendet. Zusätzlich können weitere Klassen definiert werden.
Weitere Informationen zu PriorityClasses finden Sie in der Kubernetes-Dokumentation.
PriorityClasses bei Tralios
In von uns verwalteten Clustern stellen wir Ihnen die folgenden PriorityClasses zur Verfügung (von kritisch bis unkritisch aufgelistet):
- tralios-critical: Von Tralios verwaltete, kritische Cluster Dienste, wie z.B. MetalLB und Traefik
- customer-critical: Ihre Produktiv Services, die Sie Ihren Kunden bereitstellen
- tralios-software: Von Tralios verwaltete Software die wir Ihnen bereitstellen, bspw. das Kubernetes Dashboard, Monitoring Lösungen oder andere Software, die wir für Sie betreiben
- customer-high: Services die von Ihnen mit hoher Priorität betrieben werden
- customer-medium: Services die von Ihnen mit mittlerer Priorität betrieben werden
- customer-low: Services die von Ihnen mit niedriger Priorität betrieben werden
- Wenn Sie keine PriorityClass setzen entspricht dies einer Priorität von 0
Wichtig: Die folgenden PriorityClasses dürfen niedriger priorisierte Dienste beenden um selbst zu starten: tralios-critical, customer-critical, tralios-software.
Wie verwenden Sie eine PriorityClass in Ihrem Deployment?
Sie können eine PriorityClass für Ihre Deployment folgendermaßen definieren:
apiVersion: apps/v1 kind: Deployment metadata: name: your-deployment namespace: default spec: template: spec: containers: - name: test image: bash:latest imagePullPolicy: IfNotPresent priorityClassName: "customer-critical"