1
resposta

[Dúvida] ReplicaSets Distribuídos

Na aula foi realizado um ReplicaSet de um pod em um mesmo node/máquina. O ideal para melhor aproveitamento de recursos (RAM/CPU) e disponibilidade em um ambiente de produção esses pods deveriam ser criados em nodes/máquinas diferentes? Há algum exemplo de criação de ReplicaSet nesse cenário?

1 resposta

Olá, Joel!

Você está absolutamente certo ao considerar a distribuição de Pods em diferentes nodes para melhorar o aproveitamento de recursos e aumentar a disponibilidade em um ambiente de produção. O Kubernetes, por padrão, tenta distribuir os Pods de um ReplicaSet em diferentes nodes para garantir resiliência, mas isso também depende da configuração do cluster e da disponibilidade de recursos nos nodes.

Para garantir que seus Pods sejam distribuídos, você pode usar affinity e anti-affinity rules. Essas regras ajudam a definir preferências sobre onde os Pods devem ser agendados. Por exemplo, você pode usar podAntiAffinity para garantir que os Pods de um mesmo ReplicaSet não sejam agendados no mesmo node.

Aqui está um exemplo básico de como você pode configurar um ReplicaSet com podAntiAffinity:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: portal-noticias-replicaset
spec:
  replicas: 3
  selector:
    matchLabels:
      app: portal-noticias
  template:
    metadata:
      labels:
        app: portal-noticias
    spec:
      containers:
      - name: portal-noticias
        image: sua-imagem
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - portal-noticias
            topologyKey: "kubernetes.io/hostname"

Neste exemplo, a chave topologyKey: "kubernetes.io/hostname" garante que os Pods sejam distribuídos em nodes diferentes, desde que haja nodes disponíveis.

Bons estudos!