kubernetes - 作业完成后如何自动删除 Kubernetes 作业
问题描述
我正在 GKE 上运行 kubernetes 作业,并希望在作业完成后自动删除该作业。
这是我的作业配置文件。我设置ttlSecondsAfterFinished: 0
但作业没有自动删除。我错过了什么吗?
- 集群/节点版本:1.12.8-gke.10
apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
# automatically clean up finished job
ttlSecondsAfterFinished: 0
template:
metadata:
name: myjob
spec:
containers:
- name: myjob
image: gcr.io/GCP_PROJECT/myimage:COMMIT_SHA
command: ["bash"]
args: ["deploy.sh"]
# Do not restart containers after they exit
restartPolicy: Never
解决方案
这取决于你是如何创造工作的。
如果您使用的是 CronJob,您可以使用spec.successfulJobsHistoryLimit
andspec.failedJobsHistoryLimit
并将值设置为 0。它会说 K8s 不会处理任何以前完成的作业。
如果您使用 YAML 创建 pod,则必须手动将其删除。但是,您也可以将 CronJob 设置为每 5 分钟执行一次命令。
kubectl delete job $(kubectl get job -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
它将删除所有状态为succeded 的作业。
推荐阅读
- amazon-web-services - AWS SSH 权限被拒绝(公钥)
- json - 如何在现有 JSON shema 中使某些字段可选
- python - Pyspark ml 使用分类和数值列创建管道
- javascript - 根据键值对过滤对象
- mysql - 计算所选列的总数
- session - 如何跟踪具有访问令牌的用户是否仍有有效会话?
- azure-iot-hub - 使用 Java 自定义模块连接到 Azure 门户超时
- ios - 聚焦时如何调整 UISearchController.searchBar 的大小问题?
- javascript - 应该使用以下哪个:.attribute= vs setAttribute vs attr()?
- javascript - 使用我自己的 Laravel API 时如何在 Vue JS 中保留身份验证数据