kubernetes pod 删除后不断重启

问题描述 投票:0回答:5

我有一组 Kubernetes Pod(Kafka)。它们是由 Terraform 创建的,但不知何故,它们“脱离”了状态(Terraform 无法识别它们)并且配置错误(无论如何我都不再需要它们了)。

我现在想从集群中完全删除 Pod。主要问题是,即使在我杀死/删除它们之后,它们仍然会被重新创建/重新启动。

我尝试过:

kubectl get deployments --all-namespaces

然后删除 pod 所在的命名空间

kubectl delete -n <NS> deployment <DEPLOY>

此命名空间已正确删除。不过,如果我现在尝试删除/杀死豆荚(强制和级联),它们仍然会重新出现。在这些事件中,我可以看到它们是由 kubelet 重新创建的,但我不知道为什么也不知道如何阻止这种行为。

我也查过

kubectl get jobs --all-namespaces

但是没有找到资源。还有

kubectl get daemonsets.app --all-namespaces
kubectl get daemonsets.extensions --all-namespaces

但我认为其中之一与 Kafka 部署根本无关。

我还可以尝试什么来删除这些 Pod?欢迎任何帮助。

kubernetes kubectl restart
5个回答
2
投票

好的,我找到了根本原因。

与:

kubectl get all --all-namespaces

我查找了与 pod 名称相关的所有内容。在这个原因中,我找到了相关的服务。删除这些服务后,pod 没有再次重新创建。

我仍然认为这不是解决问题的好方法(“只需删除具有相同名称的所有内容”...),如果有人可以提出更好的解决方案来解决此问题,我会很高兴。


1
投票

对我来说,它们看起来像一个有状态集,您是否也尝试过以下命令?

kubectl get statefulset --all-namespaces

1
投票

真的很像一个

statefulset
,控制着
pods

StatefulSet 中的 Pod 具有粘性、唯一的身份。该标识基于 StatefulSet 控制器分配给每个 Pod 的唯一序数索引。 Pod 的名称采用“-”的形式。

所以,尝试一下

kubectl get statefulset --all-namespaces


0
投票

那必须是一个有状态集

但是检查此链接,您可能在 terraform 中使用了类似的内容:https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/stateful_set

kubectl get statefulset -n you-namespace

0
投票

您可以通过杀死与 Pod 相关的服务来实现这一点。

  • 获取服务入口点的名称:

    kubectl 获取 svc

  • 删除服务:

    kubectl 删除 svc

入口点可以是您在该 pod 的 YAML 文件中定义的任何内容

© www.soinside.com 2019 - 2024. All rights reserved.