DEV Community

Daniel
Daniel

Posted on • Edited on

ReplicaSet - Kubernetes (BR)

O que é o ReplicaSet no kubernetes ?

ReplicaSet tem a funcionalidade de manter a quantidade de pods desejada disponível em execução a todo momento, replicando de forma idêntica.

Como funciona o ReplicaSet ?

Na sua definição terá que ter um seletor para funcionar como um identificador de pods, também terá que ter a informação de quantas replicas deseja ter desse determinado recurso.

Assim o ReplicaSet trabalhará para manter o número de replicas, excluindo e criando novos pods de acordo com o template que passar na criação.


Entendendo a criação de um ReplicaSet.

Nesse exemplo vamos criar um ReplicaSet que terá 3 replicas de um template com apenas um container de nginx na última versão. usando o seletor matchLabels para encontrar pods com labels iguais.

Caso não especifique o número de replicas o padrão é 1.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rsnginx
spec:
  replicas: 3 # <-- Esse é o campo que define a quantidade de replicas desejadas
  selector:
    matchLabels: # <-- Esse seria o seletor para dar match com pods que tiverem o mesmo Label implícito. 
      tier: web
  template:
    metadata:
      labels:
        tier: web # <-- definindo o mesmo Label observado pelo matchLabels
    spec:
      containers:
        - name: nginxweb
          image: nginx:latest

Enter fullscreen mode Exit fullscreen mode

Para criar o ReplicaSet acima basta rodar o seguinte comando:

kubectl apply -f {nome_do_seu_arquivo}
Enter fullscreen mode Exit fullscreen mode

Você pode ver seus ReplicaSets:

kubectl get rs
Enter fullscreen mode Exit fullscreen mode

Podemos inspecionar os ReplicaSets:

kubectl describe rs/{nome_do_seu_replicaSet_criado}
Enter fullscreen mode Exit fullscreen mode

O ReplicaSet pode adquirir pods sem ser os definidos no template ?

Sim, mas temos algumas regras para esse uso:

  • 1) Se os pods conterem o mesmo Label que o do ReplicaSet porém foram criados depois, o ReplicaSet irá adquirir os pods e encerrar logo em seguida, excederia a quantidade definida na criação do ReplicaSet.

  • 2) Se os pods forem criados antes do ReplicaSet, ele iria adquiri-los e criar os faltantes para dar o número de replicas especificadas.

Basicamente o ReplicaSet vai trabalhando para manter o número de replicas desejadas. Exemplo:
Exemplo replicaSet


É possível isolar pods de um replicaSet trocando seu label, assim o replicaSet irá abandonar esse pod e criar outro em seu lugar(se o número de replicas não for alterado).


Você também consegue utilizar o replicaSet como um alvo de escala horizontal:

kubectl autoscale rs {nome_do_seu_rs} --max=10 --min=3 --cpu-percent=50
Enter fullscreen mode Exit fullscreen mode

essa é a maneira mais fácil de criar um HPA com multiplicação máxima de 10 e mínima de 3 com 50% da cpu para a escala, porém você pode optar por um yaml com esse scale.


Conclusão

Sobre o replicaSet, ele consegue manter os pods ativos de acordo com a configuração de replicas, porém se quiser gerenciar o versionamento de seus pods aconselho a usar Deployment, uma forma melhor e mais completa de se trabalhar com seus pods. Mesmo para casos de se trabalhar com apenas uma replica o ideal é que use um recurso e nunca apenas um pod.

Referências

Kubernetes

Top comments (0)