ReplicaSet - Kubernetes (BR)
Daniel
Posted on July 15, 2023
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
Para criar o ReplicaSet acima basta rodar o seguinte comando:
kubectl apply -f {nome_do_seu_arquivo}
Você pode ver seus ReplicaSets:
kubectl get rs
Podemos inspecionar os ReplicaSets:
kubectl describe rs/{nome_do_seu_replicaSet_criado}
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:
É 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
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
Posted on July 15, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 29, 2024
November 29, 2024