PodDisruptionBudget des autres contrôleurs Kubernetes

PodDisruptionBudget des autres contrôleurs Kubernetes

Afin de garantir que l'activité n'est pas interrompue ou que le SLA métier n'est pas dégradé dans Kubernetes, les applications doivent être déployées en clusters, tels que le déploiement, le déploiement StatefulSet, etc. Bien qu'il s'agisse d'un déploiement en cluster, lorsque nous détruisons activement des pods, afin d'éviter de détruire trop de pods à la fois, Kubernetes fait référence au contrôleur PodDisruptionBudget (PDB) pour contrôler le nombre de pods dans le cluster.

Dans PDB, le nombre de pods est principalement contrôlé par deux paramètres:

  • minAvailable: représente le nombre minimum de pods disponibles, qui représente le nombre minimum de pods en état d'exécution dans un cluster de pods ou le pourcentage du nombre de pods en état d'exécution et le total;

  • maxUnavailable: indique le nombre maximum de pods indisponibles, indiquant le nombre maximum de pods indisponibles dans le cluster de pods ou le pourcentage du nombre de pods indisponibles et le total;
注意:minAvailable和maxUnavailable是互斥了,也就是说两者同一时刻只能出现一种。

La commande kubectl drain prend déjà en charge le contrôleur PodDisruptionBudget. Lorsque l'opération kubectl drain est effectuée, elle détermine le nombre de clusters POD d'application en fonction du contrôleur PodDisruptionBudget, afin de garantir que la destruction du POD d'application est effectuée sans interruption de service ni dégradation du SLA de service. . Lors de l'exécution d'un drain kubectl ou d'un pod s'échappant activement, Kubernetes jugera par les situations suivantes:

  • minAvailable est défini sur une valeur de 5: il doit y avoir au moins 5 POD sains et disponibles dans le cluster POD d'application, puis l'opération peut être effectuée.

  • MinAvailable est défini sur un pourcentage de 30%: au moins 30% des POD sains disponibles dans le cluster POD d'application peuvent être exploités.

  • maxUnavailable est défini sur une valeur de 5: il ne peut y avoir que 5 POD indisponibles dans le cluster POD d'application avant que l'opération ne puisse être effectuée.

  • maxUnavailable est défini sur un pourcentage de 30%: seuls 30% des POD indisponibles du cluster POD d'application peuvent être exploités.

Dans des cas extrêmes, tels que le réglage de maxUnavailable sur 0 ou 100%, cela signifie que l'opération de vidange kubectl ne peut pas être effectuée. De la même manière, définir minAvailable sur 100% ou sur le nombre maximal de copies du cluster POD d'application signifie également que l'opération de vidange kubectl ne peut pas être effectuée.

注意:使用PodDisruptionBudget控制器并不能保证任何情况下都对业务POD集群进行约束,PodDisruptionBudget控制器只能保证POD主动逃离的情况下业务不中断或者业务SLA不降级,例如在执行kubectldrain命令时。

Exemple:
(1), définissez minAvailable

apiVersion: policy/v1beta1

kind: PodDisruptionBudget

metadata:

  name: pdb-demo

spec:

  minAvailable: 2

  selector:

    matchLables:

      app: nginx

(2), définissez maxUnavailable

apiVersion: policy/v1beta1

kind: PodDisruptionBudget

metadata:

  name: pdb-demo

spec:

  maxUnavailable: 1

  selector:

    matchLables:

      app: nginx

(3) Créer une liste de ressources

对于PodDisruptionBudget对象,无法直接进行更新操作,只能通过删除和重新创建来完成对PodDisruptionBudget对象的更新。
# kubectl apply -f pdb-demo.yaml

(4) Vérifiez l'état

# kubectl get pdb

NAME       MIN AVAILABLE   MAX UNAVAILABLE   ALLOWED DISRUPTIONS   AGE

pdb-demo   2               N/A               0                     7m46s

(5) Afficher des informations détaillées

# kubectl describe pdb pdb-demo

Name:           pdb-demo

Namespace:      default

Min available:  2

Selector:       app=nginx

Status:

    Allowed disruptions:  0

    Current:              0

    Desired:              2

    Total:                0

Events:

  Type    Reason  Age                   From               Message

  ----    ------  ----                  ----               -------

  Normal  NoPods  2m58s (x53 over 28m)  controllermanager  No matching pods found
参考文档:https://kubernetes.io/docs/tasks/run-application/configure-pdb/

Finir

Je suppose que tu aimes

Origine blog.51cto.com/15080014/2654512
conseillé
Classement