如何从 Kubernetes 主节点删除 Pod?

时间:2021-02-27 12:37:23

标签: kubernetes kubernetes-pod

有谁知道如何从 kubernetes 主节点删除 pod?我在裸机 ubuntu 服务器上有一个主节点。当我尝试使用“kubectl delete pod ..”删除它或从那里强制删除时:https://kubernetes.io/docs/tasks/run-application/force-delete-stateful-set-pod/ 它不起作用。 Pod 一次又一次地创建...

4 个答案:

答案 0 :(得分:2)

Statefulsets 中的 pod 由 ReplicaSets 管理,如果规范中定义的当前副本和所需副本不匹配,则会重新创建。

您链接的文档提供了有关如何强制终止 pod 的说明,以避免正常关闭行为,这可能会根据应用程序产生意外行为。

该链接明确指出将在该部分中重新创建 Pod:

<块引用>

强制删除不会等待 kubelet 确认 Pod 已终止。无论强制删除是否成功杀死 Pod,它都会立即从 apiserver 中释放名称。这将让 StatefulSet 控制器创建一个具有相同身份的替换 Pod;这可能导致仍在运行的 Pod 重复,如果该 Pod 仍然可以与 StatefulSet 的其他成员通信,则将违反 StatefulSet 旨在保证的最多一种语义。

如果您希望停止 pod 并且不为 Statefulset 创建新的 pod,您需要通过将副本更改为 0 来缩小 Statefulset。

您可以阅读 how to scale the Statefulset replicas 的官方文档。

答案 1 :(得分:0)

弄清楚如何杀死 pod 的关键是了解它是如何创建的。例如,如果 pod 是部署的一部分,并且声明的副本数为 1,一旦您杀死/强制杀死,Kubernetes 会检测到所需状态(部署配置中定义的副本数量)与当前状态和将创建一个新的 pod 来替换已删除的 pod - 因此,在此示例中,您需要将部署扩展到 0 或删除部署。

答案 2 :(得分:0)

如果我们需要杀死任何 Pod,我们可以缩小副本集。

kubectl scale deploy <deployment_name> --replicas=<expected_no_of_replicas>

答案 3 :(得分:0)

删除 Pod 的方式取决于您创建它的方式。如果您单独创建它(不是 ReplicaSet/ReplicationController/Deployment 的一部分),那么您可以直接删除 pod。否则唯一的删除选项是 scale 选项。在生产设置中,我相信都是使用 Deployment 中的 ReplicaSet/ReplicationController/Deployment 选项(请参阅文档并了解所有这三个选项之间的区别)

相关问题