¿Cómo desalojo todos los pods de un nodo?
Puede ejecutar el comando kubectl drain para desalojar de forma segura todos los pods de un nodo.
![](https://support.huaweicloud.com/intl/es-us/cce_faq/public_sys-resources/note_3.0-es-us.png)
De forma predeterminada, el comando kubectl drain conserva algunos pods del sistema, por ejemplo, everest-csi-driver.
- Utilice kubectl para conectarse al clúster.
- Compruebe los nodos en el clúster.
kubectl get node
- Seleccione un nodo y vea todos los pods del nodo.
kubectl get pod --all-namespaces -owide --field-selector spec.nodeName=192.168.0.160
Los pods en el nodo antes del desalojo son los siguientes:
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>
- Desaloja todos los pods del nodo.
kubectl drain 192.168.0.160
Si existe un pod montado con almacenamiento local o controlado por un conjunto de DaemonSet en el nodo, el mensaje "error: unable to drain node "192.168.0.160", aborting command... " se mostrará. La orden de desalojo no tiene efecto. Puede agregar los siguientes parámetros al final del comando anterior para desalojar por la fuerza el pod:
- --delete-emptydir-data: desaloja por la fuerza los pods montados con almacenamiento local, por ejemplo, coredns.
- --ignore-daemonsets: desaloja por la fuerza los pods de DaemonSet, por ejemplo, everest-csi-driver.
En el ejemplo, ambos tipos de pods existen en el nodo. Por lo tanto, la orden de desalojo es la siguiente:
kubectl drain 192.168.0.160 --delete-emptydir-data --ignore-daemonsets
- Después del desalojo, el nodo se marca automáticamente como no programado. Es decir, el nodo está contaminado node.kubernetes.io/unschedulable = : NoSchedule.
Después del desalojo, solo se conservan los pods del sistema en el nodo.
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>
Operaciones relacionadas
Operaciones de drain, cordon y uncordon de kubectl:
- drain: Desaloja de forma segura todos los pods de un nodo y marca el nodo como no programado.
- cordon: Marca el nodo como no programado. Es decir, el nodo está contaminado node.kubernetes.io/unschedulable = : NoSchedule.
- uncordon: Marca el nodo como programable.
Para obtener más información, consulte la documentación de kubectl.
Políticas de planificación Preguntas frecuentes
- ¿Cómo distribuyo uniformemente varios pods a cada nodo?
- ¿Cómo puedo evitar que un contenedor en un nodo sea desalojado?
- ¿Por qué los pods no se distribuyen uniformemente a los nodos?
- ¿Cómo desalojo todos los pods de un nodo?
Comentarios
¿Le pareció útil esta página?
Deje algún comentariomore