Mientras trabaja en el entorno de clúster de Kubernetes, habrá momentos en los que se encuentre con una situación en la que necesite eliminar pods de uno de sus nodos de trabajo.
Es posible que deba depurar problemas con el nodo en sí, actualizar el nodo o simplemente reducir la escala de su clúster.
La acción de eliminar un pod de Kubernetes es muy simple con el kubectl delete pod
comando:
kubectl delete pod pod-name
Sin embargo, hay pasos específicos que debe seguir para minimizar la interrupción de su aplicación. Lo explicaré en detalle en este artículo.
Eliminar pods de Kubernetes correctamente
Primero, enumere todos los pods:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
pod-delete-demo 1/1 Running 0 4s 172.16.213.196 kworker-rj2 <none> <none>
Ahora suponga que desea eliminar el Pod llamado "pod-delete-demo", ejecute el siguiente comando:
[email protected]:~# kubectl delete pod pod-delete-demo
pod "pod-delete-demo" deleted
Confirme que el pod en cuestión se eliminó enumerando todos los pods:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
Puede ver que no hay ningún pod-delete-demo que se esté ejecutando.
Forzar eliminación de pods de Kubernetes
¿Por qué necesita forzar la eliminación del pod?
A veces, el pod se atasca en terminando/desconocido Estado en un nodo inalcanzable después de un tiempo de espera.
Los pods también pueden entrar en estos estados cuando el usuario intenta eliminar correctamente un pod en un nodo inalcanzable.
En esos escenarios, puede eliminar el Pod a la fuerza.
Si desea eliminar un Pod a la fuerza usando la versión de kubectl>=1.5, haga lo siguiente:
kubectl delete pods pod_name --grace-period=0 --force
Si está utilizando cualquier versión de kubectl <=1.4, debe omitir --force
opción y uso:
kubectl delete pods pod_name --grace-period=0
Ahora eliminemos el pod "pod-delete-demo" usando el método anterior:
[email protected]:~# kubectl delete pod pod-delete-demo --force --grace-period=0 --namespace=default
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod-delete-demo" force delete
Si incluso después de estos comandos, el pod está atascado en Unknown
state, use el siguiente comando para eliminar el pod del clúster:
kubectl patch pod pod-delete-demo -p '{"metadata":{"finalizers":null}}'
Confirme que el pod se ha eliminado:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
Espero que encuentre útil este consejo de Kubernetes. Manténgase suscrito para obtener más consejos y tutoriales de DevOps .
Rakesh Jain
Profesional DevOps | RHCA | Jenkins | Git | ventana acoplable | Kubernetes | Ansible | Prometeo | Grafana | Nube de AWS