如何在Kubernetes中删除未知状态的pod?

qv7cva1a  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(3)|浏览(202)

我在Amazon EKS上有一个kubernetes集群,有时会出现一些状态为Unknown的pod。我读到这是因为我的pod没有设置内存限制,更改后没有出现具有该状态的新pod。但我尝试使用kubectl delete pod <pod_name>删除现有的pod,但没有成功。我该如何删除它们?

amrnrhlw

amrnrhlw1#

您可以强制删除窗格,如下所示:

kubectl delete pod <pod_name> --grace-period=0 --force
o7jaxewo

o7jaxewo2#

在Kubernetes集群中,可以使用Kubernetes工作负载创建Pod。工作负载包括以下几种:

  • 部署
  • 副本集
  • 守护程序集
  • 状态集
  • 复制控制器
  • 职务
  • 克隆作业
  • 或Pod(直接)

如果您使用上述列表中除Pod之外的任何其他内容,则Pod的ownerReference(.metadata.ownerRefference)。例如,如果您创建一个名为d1的部署,然后它首先创建一个名为d1-***的ReplicaSet,在这种情况下,ReplicaSet的ownerReference是Deployment d1。(s)(前缀为d1-***-***)。因此,Pod的ownerReference将是ReplicaSet d1-***

  • 如果只是删除部署创建的Pod,则Pod也将被删除。但所有者ReplicaSet会重新创建它们。
  • 如果只删除ReplicaSet,则ReplicaSet及其Pod也将被删除。但部署控制器将再次重新创建ReplicaSet,然后新创建的ReplicaSet将再次创建Pod。
  • 但是,如果您只是删除原始部署,则它的所有内容也将被删除。
    更新日期:

如果您不想删除原始部署或其他工作负载以保持生产,则可以通过强制删除单元来实现您的愿望:

$ kubectl delete pod <pod_name> --namespace <namespace> --grace-period 0 --force

根据kubectl命令参考、

***--grace-period:**默认值为-1。指定给资源正常终止的时间段(秒)。如果为负数,则忽略。设置为1表示立即关闭。只有在--force为true(强制删除)时才能设置为0。
***--force:***默认值为false。仅当grace-period=0时使用。如果为true,则立即从API中删除资源并绕过正常删除。请注意,立即删除某些资源可能会导致不一致或数据丢失,需要确认。

你就是这样。

v9tzhpje

v9tzhpje3#

您 是否 直接 部署 了 Pod ? 或者 它 是 从 部署 或 状态 集 部署 的 ? 请 尝试 删除 部署 或 状态 集 。
如果 没有 任何 效果 , 则 删除 Pod 所在 的 名称 空间 。 但是 , 所有 对象 都 将 从 该 名称 空间 中 删除

相关问题