代码之家  ›  专栏  ›  技术社区  ›  William Ross

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

  •  1
  • William Ross  · 技术社区  · 6 年前

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

    在某个地方发现cron作业的默认值是100MB?在哪里可以查看或更改kubernetes cron作业的默认值?

    1 回复  |  直到 6 年前
        1
  •  1
  •   aurelius    6 年前

    您可以向该作业添加资源和限制,这样就可以防止它被OOM杀死。需要注意的一点是资源和限制是如何工作的。我在这里解释了一些情况 answer 堆栈上。这是值得检查的官员 documentation 为了避免常见的错误,CPU和内存资源/限制的工作方式也略有不同。

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

    kubectl describe ns default
    Name:         default
    Labels:       <none>
    Annotations:  <none>
    Status:       Active
    
    No resource quota.
    
    No resource limits.
    

    这是给GKE的:

    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
    

    通常,您只需按照描述的那样设置每个命名空间的资源和限制。 here .