【问题解决】kubectl delete pod ***后又创建了一个新的pod
文章标签:kubectl create
kubectl delete
场景表述:
基于yaml创建了一个resource,yaml文件内容如下:
helloworld.yaml
apiVersion: v1kind: ReplicationControllermetadata: name: go-admin labels: name: go-adminspec: replicas: 1 selector: name: go-admin template: metadata: labels: name: go-admin spec: containers: - name: master image: docker.io/golangpkg/go-admin:latest ports: - containerPort: 8080
注意:在这个文件中指定了kind为ReplicationController,即会创建一个rc用以监控并恢复此次create操作
基于此yaml文件创建resource:
# kubectl create -f helloworld.yamlreplicationcontroller "go-admin" created#
查看创建的pod:
# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE go-admin-kt6fs 1/1 Running 0 39m 10.244.3.7 kube-node-2#
删除创建的这个pod:
# kubectl delete pod go-admin-kt6fspod "go-admin-kt6fs" deleted#
注意:此处提示已被删除
再次查看当前的pod情况:
# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE go-admin-xfmxr 1/1 Running 0 1m 10.244.2.7 kube-node-1#
发现仍然存在一个go-admin前缀的pod,只是名字发生了变化。
明明我们已经删除了这个pod,为什么又出现了一个pod呢,就好像是某个维护机制检测到之前的pod被删除后,又创建了一个新的pod,实际上,确实如此,回想我们的helloworld.yaml文件,前面提到了kind为ReplicationController,且指定了replicas为1:
# kubectl get rcNAME DESIRED CURRENT READY AGE go-admin 1 1 1 2h
这可以理解为:当创建此pod时,kubernetes会同时创建一个副本控制器,用以监控此yaml文件创建对象的状态,当检测到异常时,会自动创建一个,故,不管我们怎么删都删不掉。
至此,我们可以总结出,当kubectl delete操作无效时可以尝试下面几个步骤来排查原因:
检查是否创建了deployments任务:
kubectl get deployments
检查是否创建了副本控制器ReplicationController:
kubectl get rc
检查死否创建了副本集replicasets:
kubectl get rs
如果有,先执行kubectl delete deployment|rc|rs $name
后在执行kubectl delete pod $pod_name
方可真正实现删除目的。
作者:王小奕er
链接:https://www.jianshu.com/p/70e9c0b5fd25
共同学习,写下你的评论
评论加载中...
作者其他优质文章