
Para seguir este artigo você pode obter os arquivos em - https://github.com/ProgrammingOnMars/kubernetes-for-dev
Quando um pod é criado, este pod não é gerenciado por nada. Assim, um pod pode ser parado por qualquer motivo, talvez erro na aplicação, ou erros de rede. Então, precisamos de um mecanismo para manter a aplicação disponível.
Quando um Pod é parado por qualquer motivo sua aplicação não estará disponível, mas você provavelmente não quer isso. Você precisa de um mecanismo para reiniciar ou criar outros pods para manter a aplicação disponível novamente.
Outra razão é quando você quer criar um balanceamento de carga para distribuir as cargas de trabalho da sua aplicação.
O ReplicaSet gerencia o estado dos pods, sua quantidade para garantir balanceamento de carga entre os nodes, e a quantidade mínima de pods.
Vamos criar um ReplicaSet
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: programmingonmars-replicaset
labels:
app: programmingonmars
spec:
replicas: 3
selector:
matchLabels:
app: programmingonmars
template:
metadata:
labels:
app: programmingonmars
spec:
containers:
- name: programmingonmars-container
image: andrelucastic/demo:latest
ports:
- containerPort: 8080
O número de replicas indica o número de Pods que devem ser mantidos
O template são os dados (características) dos novos Pods. Quando um ReplicaSet precisa criar um novo Pod ele usa seu template
Vamos aplicar este arquivo de configuração no cluster
kubectl apply -f 03-managing-pods-using-replica-set/replica-set.yml
Agora vamos ver o ReplicaSet criado usando o comando
kubectl get replicaset

Desire - O número de Pods que declaramos no arquivo.
Current - Os pods que estão em execução no cluster e que estão sendo gerenciados pelo replica set.
Ready - Os pods que estão em execução.
Vamos ver se a aplicação está funcionando usando por enquanto o comando:
kubectl port-forward replicaset/programmingonmars-replicaset 8000:8080
E podemos ver acessando localhost:8000 usando o terminal ou o navegador.

Vamos acessar a URL

Suponha que temos 10, 100, 1000 pods? Sim, usando ReplicaSet precisaríamos deletar todos esses pods.
Mas precisamos resolver isso usando deployments
Veremos no próximo post. Até lá!
Tags: Microservice, Kubernetes, replicaset, k8s
