Como funciona o Rollout Pause e Rollout Resume no kubernetes
- Rodrigo Saito
- há 2 dias
- 2 min de leitura
Fala pessoal, tudo bem?
Vamos aprender a utilizar 2 variações do comando Rollout, sendo o Pause e o Resume. Geralmente podemos utilizar quando aplicamos uma arquivos para fazer a criação de componentes e percebemos que pode haver algo de errado. É possível pausarmos a criação dos componentes e e verificarmos o ambiente.
Para isso, verifique se o minikube está executando:
minikube status
Se ele não estiver executando, de o comando:
minikube start
minube status
Vamos fazer a abetura de 3 terminais ao mesmo tempo, para tentar enxergar o que a contece quando executamos o Rollout Paulo e Resumo, pois são muito rápidos.
Abra os 3 terminais com aproximadamente esta disposição em seu desktop do Linux:

No primeiro terminal, execute o comando para fazer um delete em todo o seu deployment (caso exista)
kubectl delete deployment.apps/frontend-deployment
Verifique se todos os pods foram eliminados:
kubectl get pods
Faça a aplicação do arquivo my-deployment,yaml:
cd Downloads
kubectl apply -f my-deployments-yaml
e verifique novamente se todos os seus pods foram criados:
kubectl get pods
No primeiro terminal, fique monitorando os pods com o comando:
watch kubectl get pods
Abra o arquiivo my-deployments.yaml e altere a versao do nginx e salve o arquivo. Ele deve estar atualmente com a versao nginx 1.21.5:
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
labels:
app: frontend
spec:
template:
metadata:
name: pod-my-nginx
labels:
env: production
spec:
containers:
- name: nginx-container
image: nginx:1.16.1
selector:
matchLabels:
env: production
replicas: 8No segundo terminal, apenas digite o comando: (NÃO APERTE O <ENTER> PARA EXECUTAR o ulimo comando)
cd Downloads
kubectl apply -f my-deployment.yaml
No terceiro terminal, apenas digite o comando de pause:
kubectl rollout pause deployment.apps/frontend-deployment 
Vá no terminal 2 e presione o enter para executar o comando e em 1 segundo, vá para o terminal 3 e pressione enter. E perceba que no terminal 1, ele vai ter iniciado a atualização mas não vai dar tempo de ele ter feito a atualização em todos.

No nosso caso, deu tempo do K8s fazer somente 3 atualizações. Imagine a situação onde voce teria que atualizar 5000, 10000 pods e que algo tivesse acontecido de inesperado, voce conseguiria parar a tempo de não atualizar todos pods.
Nesse caso, vamos liberar para que as proximas pods sejam atualizados. Digite o comando no terminal 3
kubectl rollout resume deployment.apps/frontend-deployment
No temrinal 1, todos pods estão com status running:

Caso voce quisesse voltar a versão anterior, voce pode utilizar o comando history para verificar as versoes já feitas:
kubectl rollout history deployment.apps/frontend-deployment
E depois execute o comando para a versão desejada:
kubectl rollout undo deployment.apps/frontend-deployment --to-revision=5
Todos os pods iráo voltar a versao anterior (no terminal 1:

Dessa forma, conseguimos interagir com Rollout Pause e Rollout Resume do K8s.
Obrigado e até+!


Comentários