无法删除 Kubernetes 中的所有 pods - Clear/restart Kubernetes
Unable to delete all pods in Kubernetes - Clear/restart Kubernetes
我正在尝试 delete/remove 我环境中的所有 pods 运行。当我发出
docker ps
我得到以下输出。这是示例屏幕截图。可以看到都是K8s。我想删除所有 pods/remove 它们。
我尝试了以下所有方法,但它们一次又一次地出现
sudo kubectl delete --all pods --namespace=default/kube-public #returns "no resources found" for both default and kube-public namespaces
sudo kubectl delete --all pods --namespace=kube-system # shows "pod xxx deleted"
sudo kubectl get deployments # returns no resources found
除上述之外,我还尝试将 docker stop
和 docker rm
与容器 ID 一起使用,但它们要么重生。我想清除所有这些。我想从头说起
我已注销并重新登录多次,但我仍然看到这些项目。
你能帮我删除所有 pods 并且我希望 "docker ps" 的输出没有任何与 kubernetes 相关的项目,如上所示吗?
您不应从 kube-system 命名空间中删除 pods。该命名空间中的所有核心 kubernetes pods 运行。如果你搞砸了那些 pods 那么你的集群可能无法工作。
而是删除您 运行 您的应用程序工作负载所在的命名空间。这将清除相应命名空间中的所有资源。
sudo kubectl get deployments # returns no resources found
Deployments
are not the only Controllers in Kubernetes which may manage your Pods. There are many: StatefulSet
, ReplicaSet
, etc. (check the Controllers doc 了解详情)
简而言之,Controller 负责确保它管理的所有 Pods 都是 运行,并在必要时创建它们 - 当您删除所有 Pods 时,关联的 Controller 将实现它们不见了,只是 re-create 它们以确保它符合其规格。
如果你想有效的删除所有Pods,你应该删除所有相关的Controller(或者更新它们以将它们的副本设置为0),例如:
# do NOT run this in the kube-system namespace, it may corrupt your cluster
# You can also specify --namespace xxx to delete in a specific namespace
kubectl delete deployment --all # configures ReplicaSets, deleting Deployments should delete ReplicaSet as well as associated Pods
kubectl delete statefulset --all
kubectl delete daemonset --all
kubectl delete job --all
kubectl delete cronjob --all
kubectl delete replicationcontroller --all # their should not be any ReplicationController as Deployment should be used
# Then delete what you find
编辑:正如 回答中提到的,您还可以使用 kubectl delete namespace mynamespace
删除整个命名空间(当然不要删除 kube-system
),但它也可能会删除其他组件名称空间,例如 Services
重要提示:
- 删除 Pods 或
kube-system
命名空间中与集群本身的内部管道相关的对象时,您也应该小心。
- 您不应该通过使用
docker
命令删除其底层容器来直接删除 Kubernetes 组件,这可能会产生意想不到的效果,请改用 kubectl
。
我正在尝试 delete/remove 我环境中的所有 pods 运行。当我发出
docker ps
我得到以下输出。这是示例屏幕截图。可以看到都是K8s。我想删除所有 pods/remove 它们。
我尝试了以下所有方法,但它们一次又一次地出现
sudo kubectl delete --all pods --namespace=default/kube-public #returns "no resources found" for both default and kube-public namespaces
sudo kubectl delete --all pods --namespace=kube-system # shows "pod xxx deleted"
sudo kubectl get deployments # returns no resources found
除上述之外,我还尝试将 docker stop
和 docker rm
与容器 ID 一起使用,但它们要么重生。我想清除所有这些。我想从头说起
我已注销并重新登录多次,但我仍然看到这些项目。
你能帮我删除所有 pods 并且我希望 "docker ps" 的输出没有任何与 kubernetes 相关的项目,如上所示吗?
您不应从 kube-system 命名空间中删除 pods。该命名空间中的所有核心 kubernetes pods 运行。如果你搞砸了那些 pods 那么你的集群可能无法工作。
而是删除您 运行 您的应用程序工作负载所在的命名空间。这将清除相应命名空间中的所有资源。
sudo kubectl get deployments # returns no resources found
Deployments
are not the only Controllers in Kubernetes which may manage your Pods. There are many: StatefulSet
, ReplicaSet
, etc. (check the Controllers doc 了解详情)
简而言之,Controller 负责确保它管理的所有 Pods 都是 运行,并在必要时创建它们 - 当您删除所有 Pods 时,关联的 Controller 将实现它们不见了,只是 re-create 它们以确保它符合其规格。
如果你想有效的删除所有Pods,你应该删除所有相关的Controller(或者更新它们以将它们的副本设置为0),例如:
# do NOT run this in the kube-system namespace, it may corrupt your cluster
# You can also specify --namespace xxx to delete in a specific namespace
kubectl delete deployment --all # configures ReplicaSets, deleting Deployments should delete ReplicaSet as well as associated Pods
kubectl delete statefulset --all
kubectl delete daemonset --all
kubectl delete job --all
kubectl delete cronjob --all
kubectl delete replicationcontroller --all # their should not be any ReplicationController as Deployment should be used
# Then delete what you find
编辑:正如 kubectl delete namespace mynamespace
删除整个命名空间(当然不要删除 kube-system
),但它也可能会删除其他组件名称空间,例如 Services
重要提示:
- 删除 Pods 或
kube-system
命名空间中与集群本身的内部管道相关的对象时,您也应该小心。 - 您不应该通过使用
docker
命令删除其底层容器来直接删除 Kubernetes 组件,这可能会产生意想不到的效果,请改用kubectl
。