Sobes.tech
Middle+

O que são afinidade e anti-afinidade no Kubernetes?

sobes.tech IA

Resposta da IA

Affinity e anti-affinity no Kubernetes são mecanismos que permitem gerir a colocação de pods nos nós do cluster tendo em conta regras e preferências específicas.

  • Affinity (afinidade) define regras pelas quais os pods tentam colocar-se perto de outros pods ou em nós com certas etiquetas. Isto ajuda, por exemplo, a agrupar serviços relacionados para reduzir latências.

  • Anti-affinity (anti-afinidade) impede, pelo contrário, que os pods se coloquem perto de certos pods ou em nós com etiquetas específicas. Isto é útil para aumentar a resistência a falhas, garantindo que as cópias de um mesmo serviço não fiquem no mesmo nó.

Exemplo de uso de affinity num manifesto de Pod:

apiVersion: v1
kind: Pod
metadata:
  name: exemplo-pod
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - frontend
        topologyKey: "kubernetes.io/hostname"
  containers:
  - name: exemplo-container
    image: nginx

Aqui, o pod será colocado num nó onde já exista um pod com a etiqueta app=frontend.