例如,创建如下所示的就业机会:
apiVersion: batch/v1
kind: Job
metadata:
name: test-job-sebas
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
导致作业资源被创建,但未观察到 Pod 或事件。 Pod 状态如下:
Pods Statuses: 1 Running / 0 Succeeded / 0 Failed
唯一可见的事件是成功创建 pod 的通知。问题是该消息仅在 30 分钟的完全静默后才出现。
Normal SuccessfulCreate 21m job-controller Created pod: test-job-sebas-882bh
从时间上我们可以观察到kube-apiserver
日志允许作业资源的“create”动词,我们无法在任何其他具有文本“test-job-sebas”的 pod(控制器/调度程序/apiserver)中发现任何其他日志,直到约 30 分钟后哪里的kube-controller-manager
记录以下内容。
Event occurred" object="test-namespace/job-test-01" kind="Job" apiVersion="batch/v1" type="Normal" reason="SuccessfulCreate" message="Created pod: test-job-sebas-882bh"
此集群中的任何作业都会发生这种情况,无论作业的名称空间或性质如何,无论它来自 CronJob 还是像此处示例中提供的那样显式创建。
查看代码并没有给我们带来任何明显的怀疑,表明可能发生的情况:https://github.com/kubernetes/kubernetes/blob/b5b0cc8bb88fb678c9b065c8da4f4c06a155a628/pkg/controller/job/job_controller.go https://github.com/kubernetes/kubernetes/blob/b5b0cc8bb88fb678c9b065c8da4f4c06a155a628/pkg/controller/job/job_controller.go
编辑:目前,我们的集群中有大约 15.000 个作业,其中大多数作业似乎都处于活动状态,并且仅来自一个命名空间。这会让我们认为我们正在达到某种极限或达到某种饱和……但我们无法通过任何可见数据来证实这一点。