Como remover todos os pods em um nó?
Você pode executar o comando kubectl drain para remover com segurança todos os pods de um nó.

Por padrão, o comando kubectl drain retém alguns pods do sistema, por exemplo, everest-csi-driver.
- Use o kubectl para se conectar ao cluster.
- Verifique os nós no cluster.
kubectl get node
- Selecione um nó e visualize todos os pods no nó.
kubectl get pod --all-namespaces -owide --field-selector spec.nodeName=192.168.0.160
Os pods no nó antes da remoção são os seguintes:
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES default nginx-5bcc57c74b-lgcvh 1/1 Running 0 7m25s 10.0.0.140 192.168.0.160 <none> <none> kube-system coredns-6fcd88c4c-97p6s 1/1 Running 0 3h16m 10.0.0.138 192.168.0.160 <none> <none> kube-system everest-csi-controller-56796f47cc-99dtm 1/1 Running 0 3h16m 10.0.0.139 192.168.0.160 <none> <none> kube-system everest-csi-driver-dpfzl 2/2 Running 2 12d 192.168.0.160 192.168.0.160 <none> <none> kube-system icagent-tpfpv 1/1 Running 1 12d 192.168.0.160 192.168.0.160 <none> <none>
- Remova todos os pods no nó.
kubectl drain 192.168.0.160
Se um pod montado com armazenamento local ou controlado por um conjunto de DaemonSet existe no nó, a mensagem "error: unable to drain node "192.168.0.160", aborting command... " será exibida. O comando de despejo não tem efeito. Você pode adicionar os seguintes parâmetros ao final do comando anterior para remover o pod à força:
- --delete-emptydir-data: remova à força pods montados com armazenamento local, por exemplo, coredns.
- --ignore-daemonsets: remova à força os pods de DaemonSet, por exemplo, everest-csi-driver.
No exemplo, ambos os tipos de pods existem no nó. Portanto, o comando de remoção é o seguinte:
kubectl drain 192.168.0.160 --delete-emptydir-data --ignore-daemonsets
- Após a remoção, o nó é automaticamente marcado como não escalonável. Ou seja, o nó está contaminado node.kubernetes.io/unschedulable = : NoSchedule.
Após a remoção, apenas os pods do sistema são mantidos no nó.
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system everest-csi-driver-dpfzl 2/2 Running 2 12d 192.168.0.160 192.168.0.160 <none> <none> kube-system icagent-tpfpv 1/1 Running 1 12d 192.168.0.160 192.168.0.160 <none> <none>
Operações relacionadas
Operações de drain, cordon e uncordon de kubectl:
- drain: remove com segurança todos os pods de um nó e marca o nó como não programável.
- cordon: marca o nó como não escalonável. Ou seja, o nó está contaminado node.kubernetes.io/unschedulable = : NoSchedule.
- uncordon: marca o nó como programável.
Para obter mais informações, consulte a documentação do kubectl.