Bash 如何删除已完成的kubernetes吊舱?

Bash 如何删除已完成的kubernetes吊舱?,bash,kubernetes,Bash,Kubernetes,我在kubernetes中有一堆pods已经完成(成功或失败),我想清理kubectl get pods的输出。以下是我运行kubectl get pods时看到的内容: NAME READY STATUS RESTARTS AGE intent-insights-aws-org-73-ingest-391c9384 0/1 ImagePullBackOff 0

我在kubernetes中有一堆pods已经完成(成功或失败),我想清理
kubectl get pods
的输出。以下是我运行
kubectl get pods
时看到的内容:

NAME                                           READY   STATUS             RESTARTS   AGE
intent-insights-aws-org-73-ingest-391c9384     0/1     ImagePullBackOff   0          8d
intent-postgres-f6dfcddcc-5qwl7                1/1     Running            0          23h
redis-scheduler-dev-master-0                   1/1     Running            0          10h
redis-scheduler-dev-metrics-85b45bbcc7-ch24g   1/1     Running            0          6d
redis-scheduler-dev-slave-74c7cbb557-dmvfg     1/1     Running            0          10h
redis-scheduler-dev-slave-74c7cbb557-jhqwx     1/1     Running            0          5d
scheduler-5f48b845b6-d5p4s                     2/2     Running            0          36m
snapshot-169-5af87b54                          0/1     Completed          0          20m
snapshot-169-8705f77c                          0/1     Completed          0          1h
snapshot-169-be6f4774                          0/1     Completed          0          1h
snapshot-169-ce9a8946                          0/1     Completed          0          1h
snapshot-169-d3099b06                          0/1     ImagePullBackOff   0          24m
snapshot-204-50714c88                          0/1     Completed          0          21m
snapshot-204-7c86df5a                          0/1     Completed          0          1h
snapshot-204-87f35e36                          0/1     ImagePullBackOff   0          26m
snapshot-204-b3a4c292                          0/1     Completed          0          1h
snapshot-204-c3d90db6                          0/1     Completed          0          1h
snapshot-245-3c9a7226                          0/1     ImagePullBackOff   0          28m
snapshot-245-45a907a0                          0/1     Completed          0          21m
snapshot-245-71911b06                          0/1     Completed          0          1h
snapshot-245-a8f5dd5e                          0/1     Completed          0          1h
snapshot-245-b9132236                          0/1     Completed          0          1h
snapshot-76-1e515338                           0/1     Completed          0          22m
snapshot-76-4a7d9a30                           0/1     Completed          0          1h
snapshot-76-9e168c9e                           0/1     Completed          0          1h
snapshot-76-ae510372                           0/1     Completed          0          1h
snapshot-76-f166eb18                           0/1     ImagePullBackOff   0          30m
train-169-65f88cec                             0/1     Error              0          20m
train-169-9c92f72a                             0/1     Error              0          1h
train-169-c935fc84                             0/1     Error              0          1h
train-169-d9593f80                             0/1     Error              0          1h
train-204-70729e42                             0/1     Error              0          20m
train-204-9203be3e                             0/1     Error              0          1h
train-204-d3f2337c                             0/1     Error              0          1h
train-204-e41a3e88                             0/1     Error              0          1h
train-245-7b65d1f2                             0/1     Error              0          19m
train-245-a7510d5a                             0/1     Error              0          1h
train-245-debf763e                             0/1     Error              0          1h
train-245-eec1908e                             0/1     Error              0          1h
train-76-86381784                              0/1     Completed          0          19m
train-76-b1fdc202                              0/1     Error              0          1h
train-76-e972af06                              0/1     Error              0          1h
train-76-f993c8d8                              0/1     Completed          0          1h
webserver-7fc9c69f4d-mnrjj                     2/2     Running            0          36m
worker-6997bf76bd-kvjx4                        2/2     Running            0          25m
worker-6997bf76bd-prxbg                        2/2     Running            0          36m

我想去掉像火车-204-d3f2337c这样的吊舱。我该怎么做?

这里有一个一行程序,它将删除所有未处于
运行
挂起
状态的播客(请注意,如果播客名称中有
运行
挂起
,则不会使用这个一行程序删除它):

kubectl get pods--no headers=true | grep-v“Running”| grep-v“Pending”| sed-E/([a-z0-9-]+)./\1/g'| xargs kubectl delete pod

这里有一个解释:

  • 获取没有任何标题的所有播客
  • 过滤掉
    正在运行的吊舱
  • 过滤掉挂起的POD
  • 使用sed正则表达式拉出pod的名称
  • 使用
    xargs
    按名称删除每个POD

  • 注意,这并不是所有pod状态的原因。例如,如果一个pod处于ContainerCreating状态,那么这一行程序也将删除该pod。

    如果这个pod是由CronJob创建的,那么您可以使用
    spec.failedJobsHistoryLimit
    spec.successfulJobsHistoryLimit

    示例:

    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: my-cron-job
    spec:
      schedule: "*/10 * * * *"
      failedJobsHistoryLimit: 1
      successfulJobsHistoryLimit: 3
      jobTemplate:
        spec:
          template:
             ...
    

    你可以用两种方法来做

    $ kubectl delete pod $(kubectl get pods | grep Completed | awk '{print $1}')
    


    这两种解决方案都可以

    现在你可以轻松一点了

    您可以通过以下方式列出所有已完成的POD:

    kubectl get pod——字段选择器=状态。阶段==成功
    
    并通过以下方式删除所有已完成的POD:

    kubectl delete pod--字段选择器=状态。阶段==成功
    
    如果您想删除未运行的播客,只需一个命令即可完成

    kubectl get pods——字段选择器=status.phase=跑步
    
    我也有类似的任务,但我的复制吊舱是由kubernetes job创建的。在这种情况下,您只需要删除作业并自动删除POD。使用Kubernetes Python API是否有与此等效的方法?如果您手动执行此操作,则此方法有效,但如果您希望自动化此操作,您将如何@pjincz执行此操作?他指的是POD列表,而不是作业。这会让您获得POD,要删除它们,请执行以下操作:kubectl delete pods--field selector=status.phase=跑步
    $ kubectl get pods | grep Completed | awk '{print $1}' | xargs kubectl delete pod