如何强制删除kubernetes pods?

use*_*761 21 kubernetes

我有以下豆荚:

NAME                                                 READY     STATUS        RESTARTS   AGE
xxx-myactivities-79f49cdfb4-nwg22                      1/1       Terminating   0          10h
xxx-mysearch-55864b5c59-6bnwl                          1/1       Terminating   0          1d
xxx-mysearch-55864b5c59-rpn48                          1/1       Terminating   0          13h
xxx-mysearch-6ff9bbb7cb-9qgbb                          1/1       Terminating   0          3d
Run Code Online (Sandbox Code Playgroud)

我正在运行以下代码来强制删除这些pod:

#
# Clean up dying pods
#
pods=$( kubectl get pods | grep -v Running | tail -n +2 | awk -F " " '{print $1}' )
for pod in $pods;
do
    kubectl delete pod $pod --force
done
Run Code Online (Sandbox Code Playgroud)

这是输出:

pod "xxx-myactivities-79f49cdfb4-nwg22" deleted
pod "xxx-mysearch-55864b5c59-6bnwl" deleted
pod "xxx-mysearch-55864b5c59-rpn48" deleted
pod "xxx-mysearch-6ff9bbb7cb-9qgbb" deleted
Run Code Online (Sandbox Code Playgroud)

清理完毕后,这些豆荚仍然会徘徊.

NAME                                                 READY     STATUS        RESTARTS   AGE
xxx-myactivities-79f49cdfb4-nwg22                      1/1       Terminating   0          10h
xxx-mysearch-55864b5c59-6bnwl                          1/1       Terminating   0          1d
xxx-mysearch-55864b5c59-rpn48                          1/1       Terminating   0          13h
xxx-mysearch-6ff9bbb7cb-9qgbb                          1/1       Terminating   0          3d
Run Code Online (Sandbox Code Playgroud)

如何清理这些豆荚?

Jam*_*ott 28

你有这些选择:

kubectl delete pod xxx --now 
Run Code Online (Sandbox Code Playgroud)

要么

SSH进入节点,在运行时计划卡住的pod docker ps | grep {pod name}以获得Docker Container ID运行docker rm -f {container id}

要么

kubectl delete pod NAME --grace-period=0 --force
Run Code Online (Sandbox Code Playgroud)

  • 这个没有 `--force` 的 `--grace-period=0` 只是无限期地挂起,但两者的组合有效 (4认同)
  • 问题是关于删除 Pod,而不是删除部署。请注意,该问题清楚地表明在尝试删除后“相同的 Pod”仍然存在,而不是来自同一部署的新 Pod。 (2认同)

Che*_*ana 27

要清理Pod,您需要删除其Deployment名称空间

首先发现存在部署:

$ kubectl get deployments --all-namespaces
NAME                               READY     STATUS        RESTARTS   AGE
chetabahana-web-584b95d576-62ccj   1/1       Running       0          20m
tutorial-web-56fbccc56b-wbwjq      1/1       Running       0          1m
Run Code Online (Sandbox Code Playgroud)

删除部署<NAME>-xxxx如下:

$ kubectl delete deployment <NAME>
Run Code Online (Sandbox Code Playgroud)

例如删除tutorial-web-56fbccc56b-wbwjq运行:

$ kubectl delete deployment tutorial
Run Code Online (Sandbox Code Playgroud)

然后,所有对应的Pod tutorial-xxxx会自行终止。

NAME                               READY     STATUS        RESTARTS   AGE
chetabahana-web-584b95d576-62ccj   1/1       Running       0          20m
tutorial-web-56fbccc56b-wbwjq      0/1       Terminating   0          1m
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案,删除部署而不是 Pod 或服务,否则它们会像僵尸一样复活,但后缀不同。 (6认同)
  • 我的所有部署和副本集都已删除,但仍有 pod 处于终止状态。只有詹姆斯·诺特的回答对我有帮助。 (4认同)

Sac*_*ote 15

要强行删除 pod,请使用它。

kubectl delete pod <Pod_Name> -n <namespace_name> --grace-period=0 --force

或者

kubectl delete pod <Pod_Name> -n <namespace_name> --wait=false

如需参考,请点击以下链接。 https://kubernetes.io/docs/tasks/run-application/force-delete-stateful-set-pod/


小智 9

要使用一个命令删除所有处于终止状态的 pod,请执行以下操作:

for p in $(kubectl get pods | grep Terminating | awk '{print $1}'); do kubectl delete pod $p --grace-period=0 --force;done
Run Code Online (Sandbox Code Playgroud)


lan*_*321 5

kubectl get pod --all-namespaces | awk '{if ($4 != "Running") system ("kubectl -n " $1 " delete pods " $2  " --grace-period=0 " " --force ")}'
Run Code Online (Sandbox Code Playgroud)

你可以使用这个命令