【问题标题】:How to delete a pod from Kubernetes master node?如何从 Kubernetes 主节点中删除 pod?
【发布时间】:2021-05-29 14:32:22
【问题描述】:

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

【问题讨论】:

  • 你应该将部署缩减到 0。

标签: kubernetes kubernetes-pod


【解决方案1】:

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 的官方文档。

【讨论】:

  • 嗨! :) 谢谢,我做到了,我将副本更改为 0,它确实有效
  • 很高兴为您提供帮助,@Skyeee :)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 2021-09-21
        • 1970-01-01
        • 2019-10-13
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        相关资源
        最近更新 更多