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