在 Kubernetes 集群环境中工作时,有时您会遇到需要从其中一个工作节点中删除 pod 的情况。
您可能需要调试节点本身的问题、升级节点或简单地缩减集群。
删除一个动作 Kubernetes 吊舱 很简单 kubectl delete pod
命令:
kubectl delete pod pod-name
但是,您应该采取一些具体步骤来最大程度地减少对应用程序的干扰。 我将在本文中详细解释它。
优雅地删除 Kubernetes pod
首先,列出所有 pod:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
pod-delete-demo 1/1 Running 0 4s 172.16.213.196 kworker-rj2 <none> <none>
现在假设您要删除名为“pod-delete-demo”的 Pod,运行以下命令:
[email protected]:~# kubectl delete pod pod-delete-demo
pod "pod-delete-demo" deleted
通过列出所有 Pod 来确认相关 Pod 已被删除:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
您可以看到没有正在运行的 pod-delete-demo pod。
强制删除 Kubernetes pod
为什么需要强制删除 pod?
有时 Pod 会卡在 终止/未知 超时后无法访问的节点上的状态。
当用户尝试优雅地删除无法访问的节点上的 Pod 时,Pod 也可能进入这些状态。
在这些情况下,您可以强制删除 Pod。
如果要使用 kubectl version >= 1.5 强制删除 Pod,请执行以下操作:
kubectl delete pods pod_name --grace-period=0 --force
如果你使用任何版本的 kubectl <= 1.4,你应该省略 –force
选项和使用:
kubectl delete pods pod_name --grace-period=0
现在让我们使用上述方法删除 pod “pod-delete-demo”:
[email protected]:~# kubectl delete pod pod-delete-demo --force --grace-period=0 --namespace=default
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod-delete-demo" force delete
笔记: 强制删除 pod 不要 等待 kubelet 确认 Pod 已终止。
如果即使在这些命令之后,吊舱仍然卡在 Unknown
状态,使用以下命令从集群中删除 pod:
kubectl patch pod pod-delete-demo -p '{"metadata":{"finalizers":null}}'
确认 pod 已被删除:
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
希望这个 Kubernetes 技巧对您有所帮助。 继续订阅更多 DevOps 技巧和教程。
拉克什耆那教
DevOps 专业 | RHCA | 詹金斯 | 吉特 | 码头工人 | Kubernetes | 稳定 | 普罗米修斯 | 格拉法纳 | AWS Cloud