Kubernetes - Priority Class
Alasta 17 Août 2024 kubernetes kubernetes priority pod
Description : Kubernetes, Priority Class
Kubernetes - Priority Class
La priority class indique l’importance d’un pod par rapport à un autre.
Si un pod ne peut pas être schedulé, le scheduler peut “éjecter” un pod avec une priorité basse.
Attention un utilisateur malicieu pourrait créer des pods avec un priorité haute, pour limiter cela il est possible de restreindre avec le Resource Quota, Limit Range, ClusterRole, Kyverno …..
La priority class va permettre de prioriser des pods critiques par rapport à d’autres (Node > Cluster > applications).
Si le déploiement impose une éviction de pod, Kubernetes choisira le pod avec la priorityClass la plus basse, et au sein de la même priorityClass, c’est la QoS du pod qui permettra de choisir le pod à évincer.
Configuration
high-priority-priorityclass-definition.yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: "This priority class should be used for XYZ service pods only."Note :
preemptionPolicy: (Optional) Specifies whether Pods with lower priority can be preempted by Pods with this PriorityClass. Valid values are PreemptLowerPriority (default) and Never.
Kubernetes permet de définir une seule PriorityClass avec globalDefault: true, qui sera appliquée si la définition du pod ne l’indique pas.
S’il n’y a pas de globalDefault → priorité 0, priorityClassName reste vide.
Utilisation avec un pod pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
priorityClassName: high-priority
containers:
- image: nginx
name: nginxSi aucune priorityClassName n’est spécifiée, le pod reçoit la priorité 0 — ce qui correspond à la PriorityClass default si elle existe, sinon simplement valeur 0.
Commandes
Lister les PriorityClass
kubectl get priorityclassLister les tous les pods avec leur PriorityClass
kubectl get pods -A -ocustom-columns=NAME:.metadata.name,PRIORITY:.spec.priority,CLASS:.spec.priorityClassName
NAME PRIORITY CLASS
coredns-7db6d8ff4d-d26t7 2000000000 system-cluster-critical
etcd-minikube 2000001000 system-node-critical
kube-apiserver-minikube 2000001000 system-node-critical
kube-controller-manager-minikube 2000001000 system-node-critical
kube-proxy-hf9nc 2000001000 system-node-critical
kube-scheduler-minikube 2000001000 system-node-critical
storage-provisioner 0 <none>
inspector 0 <none>Annexe
Article sur les PriorityClasses Pod Priority and Preemption: A Complete Guide