我已经使用命令
启动了pods# kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1
出了点问题,现在我无法删除此广告连播 我尝试使用下面的方法,但它不断重新创建
# 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
答案 0 :(得分:131)
您需要删除部署,而部署又应删除广告连播和副本集https://github.com/kubernetes/kubernetes/issues/24137
列出所有部署:
kubectl get deployments --all-namespaces
然后删除部署:
kubectl delete -n NAMESPACE deployment DEPLOYMENT
其中NAMESPACE是其所在的命名空间,而DEPLOYMENT是部署的name
。
答案 1 :(得分:11)
如果您的广告连播的名称类似于name-xxx-yyy
,则可以由名为name-xxx
的copysetsets.apps控制该广告连播,您应该在删除广告连播之前先删除该副本集
kubectl delete replicasets.apps name-xxx
答案 2 :(得分:5)
在某些情况下,即使删除部署,pod仍然不会消失。在强制删除它们的情况下,您可以运行以下命令。
kubectl delete pods podname --grace-period=0 --force
答案 3 :(得分:4)
即使在手动删除pod后,pod也会自动重新创建,然后使用部署创建了这些pod。 创建部署时,它会自动创建ReplicaSet和Pod。根据您在部署脚本中提到的pod的副本数量,它最初将创建这些数量的pod。 当您尝试手动删除任何窗格时,它将再次自动创建这些窗格。
是的,有时你需要强行删除pod。但在这种情况下,force命令不起作用。
答案 4 :(得分:4)
还要注意有状态集
kubectl get sts --all-namespaces
删除命名空间中的所有有状态集
kubectl --namespace <yournamespace> delete sts --all
一一删除
kubectl --namespace ag1 delete sts mssql1
kubectl --namespace ag1 delete sts mssql2
kubectl --namespace ag1 delete sts mssql3
答案 5 :(得分:4)
不是试图弄清楚它是一个部署,deamonset,statefulset还是什么(在我的情况下,它是一个复制控制器,它始终跨越新的pod :) 为了确定持续扩展图像的原因,我使用以下命令获取了所有资源:
kubectl get all
当然,您还可以从所有名称空间获取所有资源:
kubectl get all --all-namespaces
或定义您要检查的名称空间:
kubectl get all -n NAMESPACE_NAME
一旦我看到复制控制器引起了我的麻烦,便将其删除:
kubectl delete replicationcontroller/CONTROLLER_NAME
答案 6 :(得分:2)
这将提供有关所有吊舱,部署,服务和工作的信息 在名称空间中。
kubectl get pods,services, deployments, jobs
pod可以通过部署或职位
创建kubectl delete job [job_name]
kubectl delete deployment [deployment_name]
如果删除部署或作业,则可以停止容器的重新启动。
答案 7 :(得分:2)
显然有什么东西正在重新生成 pod。虽然许多其他答案让您查看所有内容(副本集、作业、部署、有状态集等)以查找可能重新生成 pod 的内容,但您可以改为查看 pod 以查看生成它的内容。例如做:
$ kubectl describe pod $mypod | grep 'Controlled By:'
Controlled By: ReplicaSet/foobar
这会告诉您究竟是什么创建了 pod。然后你可以去删除它。
答案 8 :(得分:1)
如果您有可以继续运行的作业,则需要搜索并删除该作业:
kubectl get job --all-namespaces | grep <name>
和
kubectl delete job <job-name>
答案 9 :(得分:1)
使用interactive tutorial后,我得到了一堆豆荚,服务和部署:
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
要清理所有内容,delete --all
可以正常工作:
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
这给了我一个空的Kubernetes集群(我认为是):
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
答案 10 :(得分:1)
您可以根据年龄或时间kubectl get replicasets
检查旧部署
如果要删除同一当前正在运行的应用程序pod,请根据时间删除旧部署
kubectl delete replicasets <Name of replicaset>
答案 11 :(得分:1)
我也遇到了这个问题,我已使用以下命令删除部署。
kubectl delete deployments DEPLOYMENT_NAME
但是仍然在重新创建Pod,所以我使用下面的命令来检查副本集
kubectl get rs
然后将副本集编辑为1到0
kubectl edit rs REPICASET_NAME
答案 12 :(得分:1)
提出该问题的根本原因是Deployment / job / replicasets规范属性strategy->type
,该属性定义了将Pod(隐式或显式)销毁时应发生的情况。就我而言,是Recreate
。
按照@nomad的answer,删除部署/作业/复制包是避免在将集群作为新手用户搞乱之前尝试使用致命连击的简单解决方案。
尝试以下命令以了解幕后操作,然后再进行调试:
kubectl get all -A -o name
kubectl get events -A | grep <pod-name>
答案 13 :(得分:1)
这里有许多答案告诉您删除特定的k8s对象,但是您可以一次删除多个对象,而不是一个一个地删除:
kubectl delete deployments,jobs,services,pods --all -n <namespace>
就我而言,我正在使用OLM- Operator Lifecycle Manager 运行 OpenShift 集群。 OLM是控制部署的人员,因此,当我删除部署时,仅阻止Pod重新启动是不够的。
仅当我删除 OLM 及其订阅时,部署,服务和Pod才消失。
首先列出您的命名空间中的所有k8s对象:
$ kubectl get all -n openshift-submariner
NAME READY STATUS RESTARTS AGE
pod/submariner-operator-847f545595-jwv27 1/1 Running 0 8d
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/submariner-operator-metrics ClusterIP 101.34.190.249 <none> 8383/TCP 8d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/submariner-operator 1/1 1 1 8d
NAME DESIRED CURRENT READY AGE
replicaset.apps/submariner-operator-847f545595 1 1 1 8d
OLM未与get all
一起列出,因此我专门对其进行搜索:
$ kubectl get olm -n openshift-submariner
NAME AGE
operatorgroup.operators.coreos.com/openshift-submariner 8d
NAME DISPLAY VERSION
clusterserviceversion.operators.coreos.com/submariner-operator Submariner 0.0.1
现在删除所有对象,包括OLM,订阅,部署,副本集等:
$ kubectl delete olm,svc,rs,rc,subs,deploy,jobs,pods --all -n openshift-submariner
operatorgroup.operators.coreos.com "openshift-submariner" deleted
clusterserviceversion.operators.coreos.com "submariner-operator" deleted
deployment.extensions "submariner-operator" deleted
subscription.operators.coreos.com "submariner" deleted
service "submariner-operator-metrics" deleted
replicaset.extensions "submariner-operator-847f545595" deleted
pod "submariner-operator-847f545595-jwv27" deleted
再次列出对象-全部消失:
$ kubectl get all -n openshift-submariner
No resources found.
$ kubectl get olm -n openshift-submariner
No resources found.
答案 14 :(得分:1)
除了删除NS之外,您还可以尝试删除copysetSet
kubectl get rs --all-namespaces
然后删除副本集
kubectl delete rs your_app_name
答案 15 :(得分:0)
就我而言,我是通过kubectl apply -f deployment.yaml
之类的YAML文件进行部署的,而解决方案似乎是通过kubectl delete -f deployment.yaml
进行删除
答案 16 :(得分:0)
我遇到了类似的问题:删除部署(kubectl delete deploy <name>
)后,窗格保持“运行”状态,删除后自动在其中重新创建(kubectl delete po <name>
)。
事实证明,由于某些原因并没有自动删除关联的副本集,并且在删除该副本集(kubectl delete rs <name>
之后,可以删除吊舱。
答案 17 :(得分:0)
对于具有状态集(或服务,作业等)的部署,您可以使用以下命令:
此命令将终止在指定<NAMESPACE>
中运行的所有内容
kubectl -n <NAMESPACE> delete replicasets,deployments,jobs,service,pods,statefulsets --all
有力
kubectl -n <NAMESPACE> delete replicasets,deployments,jobs,service,pods,statefulsets --all --cascade=true --grace-period=0 --force
答案 18 :(得分:0)
这发生在我身上,一些损坏的“掌舵”安装。您的部署可能有些混乱。如果之前的建议都不起作用,请查找守护程序集并将其删除。
例如 kubectl get daemonset --namespace
然后删除守护进程
kubectl delete daemonset --namespace <NAMESPACE> --all --force
然后尝试删除 Pod。
kubectl delete pod --namespace <NAMESPACE> --all --force
检查豆荚是否消失。
kubectl get pods --all-namespaces