如何找到 cron 作业的 Kubernetes 内存默认值?

Wil*_*oss 2 kubernetes

我有一个 Kubernetes cron 作业,在运行时收到 OOMKilled(内存不足)消息。这个特定的 cron 作业每天运行一次。节点本身有 4 GB RAM。

在某处发现 cron 作业的默认大小是 100 MB?在哪里可以查看或更改 Kubernetes cron 作业的默认值?

aur*_*ius 6

您只需向该作业添加资源和限制,这样就可以防止它被 OOM 终止。需要注意的一件事是资源和限制如何发挥作用。我在 Stack 上的这个答案中解释了一些场景。值得检查官方文档以避免常见错误,而且 CPU 和内存资源/限制的工作方式也略有不同。

关于资源和限制的默认值取决于您的集群所在的位置。例如,在我的 kubeadm 中,默认情况下命名空间中没有任何资源或限制default

kubectl describe ns default
Name:         default
Labels:       <none>
Annotations:  <none>
Status:       Active

No resource quota.

No resource limits.
Run Code Online (Sandbox Code Playgroud)

这是针对 GKE 的:

吉凯

因此,您的选择是为您的命名空间设置请求和限制,或者只是将其添加到作业规范中,如下例所示:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: testing-hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hi-there
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo "Hello, World!"
            resources:
              requests:
                cpu: "100Mi"
              limits:
                cpu: "100Mi"
          restartPolicy: OnFailure
Run Code Online (Sandbox Code Playgroud)

通常您也只需按此处所述设置每个命名空间的资源和限制。