如何设置Kubernetes工作的时间限制?

问题描述 投票:5回答:1

我想发起一个Kubernetes工作并给它一个固定的截止日期来完成。如果在截止日期之前pod仍在运行,我希望自动将该作业杀死。

这样的事情存在吗? (起初我认为Job规范的activeDeadlineSeconds涵盖了这个用例,但是现在我看到activeDeadlineSeconds只限制了一个工作被重新尝试的时间;它没有主动杀死一个缓慢/失控的工作。)

docker kubernetes containers jobs kubernetes-jobs
1个回答
5
投票

您可以使用GNU timeout实用程序在容器的入口点命令上自行施加超时。

例如,计算pi的前4000位数的以下作业将在10秒后超时:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    metadata:
      name: pi
    spec:
      containers:
      - name: pi
        image: perl
        command: ["/usr/bin/timeout", "10", "perl", "-Mbignum=bpi", "-wle", "print bpi(4000)"]
      restartPolicy: Never

(从https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#running-an-example-job采用的清单)

您可以使用这些数字并查看它是否超时。通常在我的工作站上计算pi的4000个数字需要大约23秒,因此如果你将它设置为5秒,它可能总是会失败,如果你将其设置为120秒,它将始终有效。

© www.soinside.com 2019 - 2024. All rights reserved.