有没有一种方法,自动删除已完成的作业除了使一个Cron作业清理已完成的作业?
K8s 作业文档指出,已完成作业的预期行为是让它们保持已完成状态,直到手动删除。因为我每天通过 CronJobs 运行数千个作业,我不想保留已完成的作业。
使用字段选择器的另一种方法:
kubectl delete jobs --field-selector status.successful=1
这可以在cronjob中执行,类似于其他答案。
my-sa-name
# 1. Create a service account
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-sa-name
namespace: default
---
# 2. Create a role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: my-completed-jobs-cleaner-role
rules:
- apiGroups: [""]
resources: ["jobs"]
verbs: ["list", "delete"]
---
# 3. Attach the role to the service account
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: my-completed-jobs-cleaner-rolebinding
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: my-completed-jobs-cleaner-role
subjects:
- kind: ServiceAccount
name: my-sa-name
namespace: default
---
# 4. Create a cronjob (with a crontab schedule) using the service account to check for completed jobs
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: jobs-cleanup
spec:
schedule: "*/30 * * * *"
jobTemplate:
spec:
template:
spec:
serviceAccountName: my-sa-name
containers:
- name: kubectl-container
image: bitnami/kubectl:latest
# I'm using bitnami kubectl, because the suggested kubectl image didn't had the `field-selector` option
command: ["sh", "-c", "kubectl delete jobs --field-selector status.successful=1"]
restartPolicy: Never
这在带有< code > ttlssecondsafterfinished 的1.12 Alpha版中是可能的。自动清理已完成作业的示例:
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
您现在可以设置历史记录限制,或者完全禁用历史记录,这样失败或成功的CronJobs不会被无限期保留。请看我的答案。文档在这里。
要设置历史限制:
< code > . spec . successfuljobshistorylimit 和< code > . spec . failed jobshistorylimit 字段是可选的。这些字段指定应该保留多少个已完成和失败的作业。默认情况下,它们分别设置为3和1。将限制设置为< code>0相当于在作业完成后不保留任何相应种类的作业。
限制为0的配置如下所示:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
successfulJobsHistoryLimit: 0
failedJobsHistoryLimit: 0
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
我无法自动删除由CronJob启动的已完成作业。正如我在此处和此处的QA中以及在官方文档中所阅读的,这可以通过建立作业历史限制< code > . spec . successfuljobshistorylimit 和< code > . spec . failed jobshistorylimit 来完成。我做过,两种情况下都成立为1。但是我的群集保存了不止一个已完成的作业,事实上,它保存的数据
我正在运行一个Kubernetes的工作,并试图在它完成几个小时后查看它的日志。但是,当我执行时,没有列出pod(返回时只是),而当我执行时,该作业的pod不在那里。如何在已完成的作业中配置删除pod的操作,以及如何更改该操作以使pod保持更长的时间以便读取其日志?
我有一个具有以下版本的 Kubernetes 集群: 我有一个cron工作在我的库伯内特斯集群。 库伯内特斯集群识别cron作业的api资源。 我正在尝试为此创建一个手动作业,但是遇到了这个错误。 谁能帮忙?
问题内容: 有谁知道用Knockout JS模板创建自动完成组合框的最佳方法吗? 我有以下模板: 有时候,这个清单很长,我想让Knockout在jQuery自动完成功能或一些直接的JavaScript代码方面表现出色,但收效甚微。 另外,jQuery.Autocomplete需要输入字段。有任何想法吗? 问题答案: 这是我编写的jQuery UI自动完成绑定。它的目的是镜像,,,与几个新增的选择要
我正在尝试使用golang-kubernetes客户端go-lib根据作业的状态筛选完成的作业。 我已经检查了其他答案,解释了如何使用kubectl获取作业,如下所示: 但我不知道如何将jsonpath输出“转化”为过滤器或列表选项 如果我按状态阶段和标签搜索pod,我会这样做: 但是,如果我要实现jsonpath 这将遍历所有作业,并检查状态下的succeeded键是否等于1。适用于所有工作。
我试图用datalist html创建一个自动完成。这是我代码: