Bash 如何删除已完成的kubernetes吊舱?
我在kubernetes中有一堆pods已经完成(成功或失败),我想清理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
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
这里有一个解释:
正在运行的吊舱
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