6.15. Budgets pour les perturbations des gousses
Comprendre et configurer les budgets de perturbation des pods.
6.15.1. Comprendre comment utiliser les budgets de perturbation des pods pour spécifier le nombre de pods qui doivent être opérationnels
Un pod disruption budget fait partie de l'API Kubernetes, qui peut être géré avec des commandes oc
comme d'autres types d'objets. Ils permettent de spécifier des contraintes de sécurité sur les pods pendant les opérations, comme la vidange d'un nœud pour la maintenance.
PodDisruptionBudget
est un objet API qui spécifie le nombre ou le pourcentage minimum de répliques qui doivent être en service à un moment donné. La définition de ces valeurs dans les projets peut être utile lors de la maintenance des nœuds (par exemple, lors de la réduction ou de la mise à niveau d'un cluster) et n'est honorée qu'en cas d'éviction volontaire (et non en cas de défaillance d'un nœud).
La configuration d'un objet PodDisruptionBudget
se compose des éléments clés suivants :
- Un sélecteur d'étiquettes, qui est une requête d'étiquettes sur un ensemble de pods.
Un niveau de disponibilité, qui spécifie le nombre minimum de pods qui doivent être disponibles simultanément, soit :
-
minAvailable
est le nombre de pods qui doivent toujours être disponibles, même en cas d'interruption. -
maxUnavailable
est le nombre de pods qui peuvent être indisponibles lors d'une perturbation.
-
Un maxUnavailable
de 0%
ou 0
ou un minAvailable
de 100%
ou égal au nombre de répliques est autorisé mais peut bloquer la vidange des nœuds.
Vous pouvez vérifier les budgets de perturbation des pods dans tous les projets en procédant comme suit :
$ oc get poddisruptionbudget --all-namespaces
Exemple de sortie
NAMESPACE NAME MIN-AVAILABLE SELECTOR another-project another-pdb 4 bar=foo test-project my-pdb 2 foo=bar
Le site PodDisruptionBudget
est considéré comme sain lorsqu'il y a au moins minAvailable
pods en cours d'exécution dans le système. Chaque pod dépassant cette limite peut être expulsé.
En fonction des paramètres de priorité et de préemption des pods, les pods de moindre priorité peuvent être supprimés en dépit de leurs exigences en matière de budget de perturbation des pods.
6.15.2. Spécification du nombre de pods qui doivent être opérationnels avec des budgets de perturbation de pods
Vous pouvez utiliser un objet PodDisruptionBudget
pour spécifier le nombre ou le pourcentage minimum de répliques qui doivent être opérationnelles à un moment donné.
Procédure
Pour configurer un budget de perturbation de pods :
Créez un fichier YAML avec une définition d'objet similaire à la suivante :
apiVersion: policy/v1 1 kind: PodDisruptionBudget metadata: name: my-pdb spec: minAvailable: 2 2 selector: 3 matchLabels: foo: bar
- 1
PodDisruptionBudget
fait partie du groupepolicy/v1
API.- 2
- Le nombre minimum de pods qui doivent être disponibles simultanément. Il peut s'agir d'un nombre entier ou d'une chaîne de caractères spécifiant un pourcentage, par exemple
20%
. - 3
- Une requête d'étiquette sur un ensemble de ressources. Les résultats de
matchLabels
etmatchExpressions
sont logiquement joints. Laissez ce paramètre vide, par exempleselector {}
, pour sélectionner tous les pods du projet.
Ou bien :
apiVersion: policy/v1 1 kind: PodDisruptionBudget metadata: name: my-pdb spec: maxUnavailable: 25% 2 selector: 3 matchLabels: foo: bar
- 1
PodDisruptionBudget
fait partie du groupepolicy/v1
API.- 2
- Le nombre maximum de pods qui peuvent être indisponibles simultanément. Il peut s'agir d'un nombre entier ou d'une chaîne de caractères spécifiant un pourcentage, par exemple
20%
. - 3
- Une requête d'étiquette sur un ensemble de ressources. Les résultats de
matchLabels
etmatchExpressions
sont logiquement joints. Laissez ce paramètre vide, par exempleselector {}
, pour sélectionner tous les pods du projet.
Exécutez la commande suivante pour ajouter l'objet au projet :
$ oc create -f </path/to/file> -n <project_name>