【问题标题】:How to kill pods on Kubernetes local setup如何在 Kubernetes 本地设置中杀死 pod
【发布时间】:2017-09-10 15:37:15
【问题描述】:

我开始使用 Kubernetes 探索 runnign docker 容器。我做了以下

  1. Docker 运行 etcd
  2. 码头运行大师
  3. docker 运行服务代理
  4. kubectl 运行 web --image=nginx

为了清理状态,我首先停止了所有容器并清除了下载的图像。但是我仍然看到 pod 正在运行。

$ kubectl get pods 
NAME                   READY     STATUS    RESTARTS   AGE
web-3476088249-w66jr   1/1       Running   0          16m

我怎样才能删除它?

【问题讨论】:

标签: kubernetes


【解决方案1】:

要删除 pod:

kubectl delete pods web-3476088249-w66jr

如果这个 pod 是通过一些 replicaSet 或 deployment 或任何创建副本的东西启动的,那么首先找到它并删除它。

kubectl get all

这将列出您的 k8s 集群中已创建的所有资源。获取有关在您的命名空间中创建的资源的信息 kubectl get all --namespace=<your_namespace>

要获取有关控制此 pod 的资源的信息,您可以这样做

kubectl describe  web-3476088249-w66jr

会有一个“控制者”字段,或一些所有者字段,您可以使用它来识别创建它的资源。

【讨论】:

  • @Madhusoodan k8s 仅当 Pod 由副本集、部署等控制器控制时才会重新创建 Pod。您应该描述 Pod 以找出谁在控制该 Pod 并首先删除该控制器,然后然后删除 pod。这样 pod 将被永久杀死。
  • 必须在末尾添加 -n 才能让它工作,没有它它对我不起作用,因为我的 pod 不在默认命名空间中(也没有错误消息)
  • 不应该是kubectl describe pod web-3476088249-w66jr吗?
【解决方案2】:

当您执行kubectl run ... 时,这是您创建的部署,而不是直接创建的 pod。您可以通过kubectl get deploy 进行检查。如果要删除 pod,需要使用kubectl delete deploy DEPLOYMENT 删除部署。

我建议您在执行此类操作时创建一个命名空间进行测试。您只需执行kubectl create ns test,然后在此命名空间中执行所有测试(通过添加-n test)。完成后,只需执行kubectl delete ns test,即可完成。

【讨论】:

    【解决方案3】:

    如果您将对象定义为Pod 那么

    kubectl delete pod <--all | pod name> 
    

    将删除所有生成的Pod。但是,如果将您的 Pod 包装到 Deployment 对象,则仅运行上面的命令将触发重新创建它们。

    在这种情况下,你需要运行

    kubectl delete deployment <--all | deployment name> 
    

    这也将删除与已删除的Deployment 相关的Service 对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 2019-02-16
      • 2018-03-04
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      相关资源
      最近更新 更多