spec services describe delete create kubernetes kubectl

services - El pod Kubernetes se recrea cuando se elimina



kubernetes service spec ports (11)

Cuando el pod se está recreando automáticamente, incluso después de la eliminación del pod manualmente, entonces esos pods se han creado utilizando la implementación. Cuando crea una implementación, crea automáticamente ReplicaSet y Pods. Dependiendo de cuántas réplicas de su pod mencione en el script de implementación, creará esa cantidad de pod inicialmente. Cuando intente eliminar cualquier pod manualmente, creará automáticamente ese pod nuevamente.

Sí, a veces necesitas eliminar los pods con fuerza. Pero en este caso, el comando de fuerza no funciona.

He comenzado pods con comando

# kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1

Algo salió mal, y ahora no puedo eliminar este pod que intenté usar los métodos a continuación, pero sigue recreándose

# kubectl delete pods busybox-na3tm pod "busybox-na3tm" deleted # kubectl get pods NAME READY STATUS RESTARTS AGE busybox-vlzh3 0/1 ContainerCreating 0 14s # kubectl delete pod busybox-vlzh3 --grace-period=0 # kubectl delete pods --all pod "busybox-131cq" deleted pod "busybox-136x9" deleted pod "busybox-13f8a" deleted pod "busybox-13svg" deleted pod "busybox-1465m" deleted pod "busybox-14uz1" deleted pod "busybox-15raj" deleted pod "busybox-160to" deleted pod "busybox-16191" deleted # kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default busybox-c9rnx 0/1 RunContainerError 0 23s


Debe eliminar la implementación, que a su vez debería eliminar los pods y la réplica establece https://github.com/kubernetes/kubernetes/issues/24137

Para enumerar todas las implementaciones:

kubectl get deployments --all-namespaces

Luego, para eliminar la implementación:

kubectl delete -n NAMESPACE deployment DEPLOYMENT

Donde NAMESPACE es el espacio de nombres en el que se encuentra, y DESPLIEGUE es el name de la implementación.

En algunos casos, también podría estar ejecutándose debido a un trabajo o conjunto de demonios. Verifique lo siguiente y ejecute el comando de eliminación apropiado.

kubectl get jobs kubectl get daemonsets.app --all-namespaces kubectl get daemonsets.extensions --all-namespaces


Después de tomar un tutorial interactivo , terminé con un grupo de pods, servicios e implementaciones:

me@pooh ~ > kubectl get pods,services NAME READY STATUS RESTARTS AGE pod/kubernetes-bootcamp-5c69669756-lzft5 1/1 Running 0 43s pod/kubernetes-bootcamp-5c69669756-n947m 1/1 Running 0 43s pod/kubernetes-bootcamp-5c69669756-s2jhl 1/1 Running 0 43s pod/kubernetes-bootcamp-5c69669756-v8vd4 1/1 Running 0 43s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37s me@pooh ~ > kubectl get deployments --all-namespaces NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE default kubernetes-bootcamp 4 4 4 4 1h docker compose 1 1 1 1 1d docker compose-api 1 1 1 1 1d kube-system kube-dns 1 1 1 1 1d

Para limpiar todo, delete --all funcionaron bien:

me@pooh ~ > kubectl delete pods,services,deployments --all pod "kubernetes-bootcamp-5c69669756-lzft5" deleted pod "kubernetes-bootcamp-5c69669756-n947m" deleted pod "kubernetes-bootcamp-5c69669756-s2jhl" deleted pod "kubernetes-bootcamp-5c69669756-v8vd4" deleted service "kubernetes" deleted deployment.extensions "kubernetes-bootcamp" deleted

Eso me dejó con (lo que creo que es) un clúster de Kubernetes vacío:

me@pooh ~ > kubectl get pods,services,deployments NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 8m


En algunos casos, los pods aún no desaparecerán incluso al eliminar la implementación. En ese caso, para forzar su eliminación, puede ejecutar el siguiente comando.

kubectl delete pods podname --grace-period=0 --force


En lugar de eliminar NS, puede intentar eliminar replicaSet

kubectl get rs --all-namespaces

Luego elimine el replicaSet

kubectl delete rs your_app_name


En lugar de tratar de averiguar si se trata de un despliegue, deamonset, statefulset ... o qué (en mi caso, era un controlador de replicación que seguía abarcando nuevos pods :) Para determinar qué era lo que seguía abarcando la imagen I Obtuve todos los recursos con este comando:

kubectl get all

Por supuesto, también puede obtener todos los recursos de todos los espacios de nombres:

kubectl get all --all-namespaces

o defina el espacio de nombres que le gustaría inspeccionar:

kubectl get all -n NAMESPACE_NAME

Una vez que vi que el controlador de replicación era responsable de mi problema, lo eliminé:

kubectl delete replicationcontroller/CONTROLLER_NAME


Esté atento a los conjuntos con estado también

kubectl get sts --all-namespaces

para eliminar todos los conjuntos con estado en un espacio de nombres

kubectl --namespace <yournamespace> delete sts --all

para eliminarlos uno por uno

kubectl --namespace ag1 delete sts mssql1 kubectl --namespace ag1 delete sts mssql2 kubectl --namespace ag1 delete sts mssql3


Esto proporcionará información sobre todos los pods, implementaciones, servicios y trabajos en el espacio de nombres.

kubectl get pods,services, deployments, jobs

los pods pueden ser creados por implementaciones o trabajos

kubectl delete job [job_name] kubectl delete deployment [deployment_name]

Si elimina la implementación o el trabajo, se puede detener el reinicio de los pods.


Puede hacer que kubectl get replicasets verificación de conjuntos de kubectl get replicasets para la implementación anterior según la edad o el tiempo

Elimine la implementación anterior en función del tiempo si desea eliminar el mismo pod de ejecución actual de la aplicación

kubectl delete replicasets <Name of replicaset>


Si tiene un trabajo que continúa ejecutándose, debe buscarlo y eliminarlo:

kubectl get job --all-namespaces | grep <name>

y

kubectl delete job <job-name>


si su pod tiene un nombre como name-xxx-yyy , podría ser controlado por replicasets.apps llamado name-xxx , debe eliminar ese replicaset primero antes de eliminar el pod

kubectl delete replicasets.apps name-xxx