无法删除kubernetes中的Pod

时间:2018-11-21 05:23:13

标签: kubernetes kubectl kubernetes-pod kubernetes-deployment

我尝试使用kubernetes安装dgraph(单台服务器),现在我只需要删除创建的Pod。我使用kubectl delete pod pod-name删除了它,结果显示为“ pod delete”,但是pod再次创建了自己,继续复制。我需要从Kubernetes中取出那些豆荚。我现在该怎么办?

6 个答案:

答案 0 :(得分:4)

根据您的指定,您使用此https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml创建了dgraph服务器,因此只需使用此服务器即可删除您创建的资源:

$ kubectl delete -f https://raw.githubusercontent.com/dgraph-io/dgraph/master/contrib/config/kubernetes/dgraph-single.yaml

答案 1 :(得分:3)

我确实遇到了同样的问题。运行命令“ kubectl获取部署”,您将获得各自的部署到您的Pod。复制它,然后运行命令“ kubectl delete deployment xyz”,然后检查。不会创建任何新的广告连播。

答案 2 :(得分:1)

@Shudipta Sharma的答案显然是有关删除吊舱的正确方法。我只想确保作者能够理解为什么会这样。 原因是Kubernetes的“思维定势”,其中Pod被视为短暂的,一次性的实体。随着Pod的出现,StatefulSets是确保给定数量的具有唯一身份的Pod可以在任何给定时间运行的一种方式。到达用于部署的yaml文件:

# This StatefulSet runs 1 pod with one Zero, one Alpha & one Ratel containers.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: dgraph
spec:
  serviceName: "dgraph"
  replicas: 1

通过部署它,基本上是说您希望Kubernetes随时运行该Pod的1个副本。当您删除Pod时,该条件不再成立,因此在删除之后,将再次产生一个Pod以确保上述条件有效。 @Shudipta Sharma提供的方式只是删除该StatefulSet,因此您不再具有所需的状态,该状态将密切注意正在运行的Pod的数量。

您可以在Kubernetes文档中找到有关此内容的更多信息:

StatefulSets

Cluster's desired state

More about Kubernetes objects and difference between each of them

答案 3 :(得分:1)

kubernetes中的Pod也取决于其类型。 像

  • 复制控制器
  • 副本集
  • 状态集
  • 部署
  • 守护程序集
  • 豆荚

执行kubectl describe pod <podname>并检查

apiVersion: apps/v1
kind: StatefulSet
metadata:

现在kubectl get <pod-kind>
最后,将其删除,并且pod也将被删除。

答案 4 :(得分:1)

删除部署,而不是Pod。正是部署使另一个吊舱得以实现。删除广告连播后,您可以看到其他的广告连播名称。

kubectl get all

kubectl delete deployment DEPLOYMENTNAME

答案 5 :(得分:0)

您可以使用以下命令执行优美的pod删除:

kubectl delete pods <pod>

如果要使用kubectl版本> = 1.5强制删除Pod,请执行以下操作:

kubectl delete pods <pod> --grace-period=0 --force

如果您使用的是任何版本的kubectl <= 1.4,则应省略--force选项,并使用:

kubectl delete pods <pod> --grace-period=0

如果即使在执行了这些命令之后,pod仍处于“未知”状态,请使用以下命令从集群中删除该pod:

kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}'