O Kubernetes se destaca como uma robusta plataforma de orquestração de contêineres. Ele capacita desenvolvedores a controlar e escalonar aplicações em contêineres com eficiência. Uma atividade frequente no Kubernetes é reiniciar pods. Seja para implementar alterações ou para solucionar falhas no pod, a reinicialização é fundamental. Neste artigo, vou mostrar diferentes formas de reiniciar pods no Kubernetes através do kubectl.
Método 1: Reiniciar um Pod Individualmente
O jeito mais simples de reiniciar um pod é com o comando kubectl delete pod
, e em seguida, kubectl apply
. Seguem os passos:
- Identifique o nome do pod a ser reiniciado com
kubectl get pods
:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-pod 1/1 Running 0 1h
- Exclua o pod com
kubectl delete pod
. O Kubernetes prontamente iniciará um novo pod para substituir o excluído:
$ kubectl delete pod my-pod
pod "my-pod" deleted
- Após isso, aplique eventuais mudanças com
kubectl apply
:
$ kubectl apply -f my-pod.yaml
pod/my-pod created
Método 2: Reiniciar Pods de um Deployment Continuamente
Para reiniciar todos os pods de um deployment, use kubectl rollout restart
. Esse comando substituirá os pods atuais por novos de forma sequencial. Os passos são:
- Determine o nome do deployment com
kubectl get deployments
:
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
my-app 3/3 3 3 1h
- Execute um reinício contínuo usando
kubectl rollout restart
:
$ kubectl rollout restart deployment my-app
deployment.apps/my-app restarted
- Acompanhe o progresso com
kubectl rollout status
:
$ kubectl rollout status deployment my-app
Waiting for deployment "my-app" rollout to finish: 2 out of 3 new replicas have been updated...
- Após a conclusão, todos os pods do deployment estarão renovados.
Método 3: Reiniciar Automaticamente com Política de Reinício
Configurar o Kubernetes para reiniciar pods em falha é possível usando a política de reinício “Always”. Aqui está como proceder:
- No arquivo YAML do pod, adicione o campo
restartPolicy
com o valor “Always”:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
restartPolicy: Always
containers:
- name: my-container
image: my-image
- Atualize a definição com
kubectl apply
:
$ kubectl apply -f my-pod.yaml
pod/my-pod created
Com isso, o Kubernetes reinicia o pod sempre que ele falhar ou for deletado.
Método 4: Reiniciar com kubectl scale
Outra estratégia é zerar as réplicas de um deployment e então restaurá-las. Assim, os pods antigos se encerram, dando lugar aos novos. A sintaxe é:
kubectl scale deployment/<deployment-name> --replicas=0 && kubectl scale deployment/<deployment-name> --replicas=<number-of-replicas>
Por exemplo, para reiniciar o “my-deployment” com três réplicas, faça:
kubectl scale deployment/my-deployment --replicas=0 && kubectl scale deployment/my-deployment --replicas=3
Isso substituirá os antigos pods por novos.
Conclusão
Reiniciar pods no Kubernetes com kubectl é uma tarefa simplificada. A recomendação geral é usar o kubectl rollout restart
para deployments ou statefulsets. Contudo, para focar em um único pod, kubectl delete
ou kubectl scale
são opções viáveis.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.