Internal
Priority classes¶
Une priority class fixe l'ordre de passage des pods quand un nœud manque de place :
- Préemption : un pod en attente évince des pods de priorité plus basse pour se placer, avant même que l'autoscaler ajoute un nœud.
- Éviction : quand un nœud manque de mémoire, le kubelet évince d'abord les pods de priorité basse.
Classes disponibles¶
Créées dans les trois clusters (service, horsprod, prod).
| Classe | Valeur | Usage |
|---|---|---|
system-node-critical |
2000001000 | Native Kubernetes : composants sans lesquels un nœud ne fonctionne pas (Cilium, CSI) |
system-cluster-critical |
2000000000 | Native Kubernetes : composants essentiels au cluster (CoreDNS) |
platform-critical |
1000000 | Composants de plateforme critiques (Traefik) |
platform-high |
900000 | Composants de plateforme importants (Vault, FA) |
app-critical |
500000 | Applications critiques (ArgoCD, cert-manager, DPE, Instana) |
app-high |
400000 | Applications prioritaires (Opale, Alfresco…) |
app-medium |
300000 | Applications standard (Adere, librairie…) |
app-low |
200000 | Applications secondaires (Kubecost…) |
| (aucune) | 0 | Pods sans priorityClassName : préemptés en premier |
Pas de classe par défaut
Aucune classe n'est globalDefault. Un pod non classé a la priorité 0, en dessous de app-low.
Les deux classes system-* sont réservées aux composants du cluster : ne pas les utiliser pour une application.
Utiliser une classe¶
Dans le pod (ou les values Helm, selon le chart) :
priorityClassName: app-high
La valeur ne s'applique qu'aux pods créés après la modification : un rollout est nécessaire.
Ajouter ou modifier une classe¶
- Modifier
k8s_definition.priority_classesdansmain-infra/scw-init-config/001.config_infrastructure/terraform.tfvars, puis appliquer. - Appliquer
010.kapsuledans chaque environnement (priority_classes.tf).
Vérifier¶
kubectl get priorityclass
kubectl get pods -A -o custom-columns=NS:.metadata.namespace,POD:.metadata.name,PRIO:.spec.priorityClassName