Cómo eliminar pods en Kubernetes [Quick K8s Tips]

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 borrar un módulo de Kubernetes es muy sencillo con el kubectl delete pod mando:

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 con gracia

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 en ejecución.

Forzar la eliminación de pods de Kubernetes

¿Por qué necesita forzar la eliminación del pod?

A veces, el Pod se atasca 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 el –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

NOTA: Forzar eliminaciones de pods no espere la confirmación del kubelet de que el Pod ha sido cancelado.

Si incluso después de estos comandos, la cápsula se atasca 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 jainista
Profesional DevOps | RHCA | Jenkins | Git | ventana acoplable | Kubernetes | Ansible Prometeo Grafana | AWS Cloud

Related Posts