Si tiene un PDB que especifica un minAvailable más alto que el minReplicas de un HPA, ¿alguna vez la cantidad de pods alcanzará el minReplicas más bajo?
Configuraciones de ejemplo:
AP
apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: frontend-pdb spec: minAvailable: 3 # HERE selector: matchLabels: app: frontendHPA
apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: frontend-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: frontend-deployment minReplicas: 2 # AND HERE maxReplicas: 20 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 65Me imagino que poner el PDB en un% en lugar de un absoluto resolvería este conflicto potencial, pero tengo curiosidad por saber cómo interactúan los dos.
En su caso, se crearán ambos objetos y el valor minAvailable: 3 definido en PodDisruptionBudget tendrá mayor prioridad que minReplicas: 2 definido en Deployment. Las condiciones definidas en PDB son más importantes. En tal caso, se cumplen las condiciones para PDB, pero si el escalador automático intenta reducir el número de réplicas, se bloqueará porque no se cumplirá la condición en PDB de valor minAvailable. Ha escrito que ha notado que cuando actualiza una implementación y tiene el PDB minAvailable menos que el minReplicas en HPA, la cantidad de pods disponibles nunca cae por debajo del HPA. Y es normal porque el escalador automático toma en consideración PDB y si
minReplicas > minAvailablepor lo tanto, se cumplen las condiciones para PDB (minAvailable es una línea crítica, por lo que un valor más alto también es adecuado), por lo que HPA puede tomar en consideración sus condiciones y alcanzará en el mejor de los casos minReplicas.
La idea general de definir el presupuesto de interrupción del pod es asegurarse de que siempre funcionen las réplicas mínimas.
Mientras el nodo está en funcionamiento, el drenaje se detendrá y esperará a que se respeten todas las condiciones de los PDB al realizar el desalojo del pod. Si los pods que fueron desalojados causan que un PDB no sea válido, esperará hasta que la condición sea válida.
NOTA:
Una PDB para una implementación con una sola réplica probablemente hará que la operación del nodo nunca se realice correctamente.
Lea más: reducción de escala-kubernetes , hpa-pdb-kubernetes .