Can not delete pods in Kubernetes
Solution 1
The link provided by the op may be unavailable. See the
update
section
As you specified you created your dgraph
server using this https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml, So just use this one to delete the resources you created:
$ kubectl delete -f https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml
Update
Basically, this is an explanation for the reason.
Kubernetes has some workloads (those contain PodTemplate in their manifest). These are:
- Pods
- Controllers (basically Pod controllers)
See, who controls whom:
- ReplicationController -> Pod(s)
- ReplicaSet -> Pod(s)
- Deployment -> ReplicaSet(s) -> Pod(s)
- StatefulSet -> Pod(s)
- DaemonSet -> Pod(s)
- Job -> Pod
- CronJob -> Job(s) -> Pod
a -> b
meansa
creates and controlsb
and the value of field.metadata.ownerReference
inb
's manifest is the reference ofa
. For example,apiVersion: v1 kind: Pod metadata: ... ownerReferences: - apiVersion: apps/v1 controller: true blockOwnerDeletion: true kind: ReplicaSet name: my-repset uid: d9607e19-f88f-11e6-a518-42010a800195 ...
This way, deletion of the parent object will also delete the child object via garbase collection.
So,
a
's controller ensures thata
's currentstatus
matches witha
'sspec
. Say, if one deletesb
, thenb
will be deleted. Buta
is still alive anda
's controller sees that there is a difference betweena
's currentstatus
anda
'sspec
. Soa
's controller recreates a newb
obj to match with thea
's spec.
The ops created a Deployment that created ReplicaSet that further created Pod(s). So here the soln was to delete the root obj which was the Deployment.
$ kubectl get deploy -n {namespace}
$ kubectl delete deploy {deployment name} -n {namespace}
Note Book
Another problem may arise during deletion is as follows: If there is any finalizer in the
.metadata.finalizers[]
section, then only after completing the task(s) performed by the associated controller, the deletion will be performed. If one wants to delete the object without performing the finalizer(s)' action(s), then he/she has to delete those finalizer(s) first. For example,$ kubectl patch -n {namespace} deploy {deployment name} --patch '{"metadata":{"finalizers":[]}}' $ kubectl delete -n {namespace} deploy {deployment name}
Solution 2
I did face same issue. Run command:
kubectl get deployment
you will get respective deployment to your pod. Copy it and then run command:
kubectl delete deployment xyz
then check. No new pods will be created.
Solution 3
You can perform a graceful pod deletion with the following command:
kubectl delete pods <pod>
If you want to delete a Pod forcibly using kubectl version >= 1.5, do the following:
kubectl delete pods <pod> --grace-period=0 --force
If you’re using any version of kubectl <= 1.4, you should omit the --force option and use:
kubectl delete pods <pod> --grace-period=0
If even after these commands the pod is stuck on Unknown state, use the following command to remove the pod from the cluster:
kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}'
Solution 4
Pods in kubernetes also depends on its type. Like
- Replication Controllers
- Replica Sets
- Statefulsets
- Deployments
- Daemon Sets
- Pod
Do kubectl describe pod <podname>
and check
apiVersion: apps/v1
kind: StatefulSet
metadata:
Now do kubectl get <pod-kind>
At last delete the same and pod will also be deleted.
Solution 5
Delete deployment, not the pods. It is deployment that is making another pod. You can see the different pod name after you delete pods.
kubectl get all
kubectl delete deployment DEPLOYMENTNAME
Related videos on Youtube
AATHITH RAJENDRAN
in a Legal Services providing company located in Capital of Tamil Nadu, India. Contact me any time on LinkedIn
Updated on August 11, 2021Comments
-
AATHITH RAJENDRAN over 2 years
I tried installing dgraph (single server) using Kubernetes.
I created pod using:kubectl create -f https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml
Now all I need to do is to delete the created pods.
I tried deleting the pod using:kubectl delete pod pod-name
The result shows
pod deleted
, but the pod keeps recreating itself.
I need to remove those pods from my Kubernetes. What should I do now?-
Shudipta Sharma over 5 yearsIs there any deployment or statefulset or replicaset or replicationcontroller or job or cronjob or daemonset running in your cluster for
dgraph
? -
nightfury1204 over 5 yearsHow did you deploy dgraph?
-
Michael Hausenblas over 5 yearsDo a
kubectl get all
. I'm pretty certain you will see a deployment there that owns the pods, that's the one you need to delete. -
Shudipta Sharma over 5 yearsDid you deploy you
dgraph
using like this command$ kubectl create -f https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml
? -
AATHITH RAJENDRAN over 5 yearsyes i created using kubectl create -f raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/… @shudipta
-
-
AATHITH RAJENDRAN over 5 yearsi tried all these and it does the job of deleting the pods. but my problem is the pods getting created again and again after deletion(its replicating).
-
saurabheights over 3 years@AATHITHRAJENDRAN There is probably a deployment which is doing this. check kubectl get all.