在Kubernetes中一次性或定期运行容器

时间:2018-11-22 14:16:13

标签: kubernetes

如何在Kubernetes中部署和运行容器,这应该完成工作并终止?

我认为这就是Run-Once的用途,但看起来像it's not supported to work

我有一些作业,打包在docker映像中,应按需运行一次(按需运行)(数据导入),在此更改中配置更改应触发重新运行,或定期运行(如卷备份)。我的想法是使用restartPolicy: never部署一个容器,该容器将在完成后停止并扩展为null。

对于这种缺少的功能,我有什么替代方法?

2 个答案:

答案 0 :(得分:1)

您可以使用作业/临时作业。此示例来自kubernetes文档:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  backoffLimit: 5
  activeDeadlineSeconds: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

因此,它将计算“ pi”并终止

答案 1 :(得分:1)

如果您希望一个任务仅执行一次或仅在需要时执行,则应定义一个作业。 从官方文档中,您可以看到以下示例:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

如果要定期执行任务,则应该定义一个作业以及一个cronjob,定义要执行该作业的频率。以下示例也来自官方文档:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure