es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo garantizar una distribución equitativa de los pods en todas las zonas de disponibilidad (AZ) en Kubernetes StatefulSet.

Desplegué un StatefulSet de K8s con 30 replicas (o N replicas, donde N es múltiplo de 3) en el clúster de EKS.

El clúster de EKS está compuesto por 3 nodos, un nodo por cada AZ, y quiero garantizar con la Afinidad/AntiAfinidad de Kubernetes la distribución igualitaria de los pods en diferentes AZ.


us-west-2a (n nodos) -> N/3 pods
us-west-2b (m nodos) -> N/3 pods
us-west-2c (o nodos) -> N/3 pods

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para garantizar la distribución equitativa de los pods en diferentes Zonas de Disponibilidad (AZs) en un clúster EKS, podemos utilizar las características de Afinidad y AntiAfinidad de Kubernetes.

    Primero, necesitamos definir una etiqueta para cada nodo en el clúster EKS indicando la AZ en la que se encuentra. Podemos hacer esto agregando las siguientes etiquetas a cada nodo:

    kubectl label nodes <nombre-del-nodo> failure-domain.beta.kubernetes.io/zone=<az>
    

    donde <nombre-del-nodo> es el nombre del nodo y <az> es la AZ en la que se encuentra (por ejemplo, us-west-2a).

    A continuación, podemos definir reglas de Afinidad y AntiAfinidad en la configuración del StatefulSet para asegurarnos de que los pods se asignen a un nodo en una AZ específica.

    Por ejemplo, podemos utilizar las siguientes reglas de Afinidad para asegurarnos de que cada pod se asigne a un nodo en una AZ diferente:

    afinidad:
      podAntiAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - etiquetaSelector:
            matchExpressions:
            - clave: app
              operador: In
              valores:
              - mi-aplicacion
          topologyKey: "kubernetes.io/hostname"
    

    Esta regla asegura que los pods con la etiqueta app=mi-aplicacion se programen en nodos que no tengan otros pods con la misma etiqueta. La topologyKey especifica que la regla debe aplicarse según el nombre del nodo, que incluye la etiqueta de la AZ que agregamos anteriormente.

    Con estas reglas en su lugar, Kubernetes debería distribuir los pods de manera equilibrada en las diferentes AZs del clúster EKS, incluso si el número de nodos en cada AZ es diferente.

Comments are closed.