Sobes.tech
Middle

Como distribuir uniformemente os pods nas zonas de disponibilidade?

sobes.tech IA

Resposta da IA

Para distribuir uniformemente os pods pelas zonas de disponibilidade no Kubernetes, são utilizados vários métodos:

  • Restrições de Distribuição de Topologia de Pods: A forma mais moderna e flexível. Permite definir regras de distribuição de pods com base em etiquetas de cargas de trabalho (etiquetas de pods) nos nós em topologias especificadas (por exemplo, zonas de disponibilidade, regiões, nomes de host).

    topologySpreadConstraints:
      - maxSkew: 1 # Desvio máximo no número de pods entre zonas
        topologyKey: topology.kubernetes.io/zone # Chave de topologia, neste caso, zona de disponibilidade
        whenUnsatisfiable: ScheduleAnyway # O que fazer se a restrição não puder ser cumprida (ScheduleAnyway ou DoNotSchedule)
        labelSelector: # Etiquetas dos pods às quais a restrição se aplica
          matchLabels:
            app: my-app
    
  • Afinidade e Anti-Afinidade de Nós: Pode usar nodeSelector ou nodeAffinity em combinação com etiquetas de nós que representam zonas de disponibilidade, mas isso é menos flexível para distribuição automática. A anti-afinidade de pods pode ser usada para evitar colocar vários pods do mesmo aplicativo em nós na mesma zona, mas isso pode levar a uma utilização insuficiente numa zona se as outras estiverem sobrecarregadas.

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.kubernetes.io/zone
              operator: In
              values:
              - zone-a
              - zone-b
              - zone-c
    
  • Estratégias de Implantação: Em combinação com Restrições de Distribuição de Topologia de Pods, estratégias de implantação (atualização contínua) ajudam a distribuir gradualmente os novos pods pelas zonas.

Recomendações:

  • Use Restrições de Distribuição de Topologia de Pods como método principal.
  • Certifique-se de que seus nós têm etiquetas corretas para zonas de disponibilidade (topology.kubernetes.io/zone).
  • Monitore a distribuição de pods após aplicar a restrição.