在Kuberntes集群中为计划作业推荐的架构是什么?

时间:2018-07-23 16:55:12

标签: docker kubernetes google-cloud-platform

对于Kuberntes集群中的计划作业,推荐的体系结构是什么?

请考虑以下情况: 您有某种工作希望每24小时运行一次,大约需要2个小时才能完成。举例来说,解析器会从某些网站抓取信息。

您希望它在Kuberntes集群中运行,以便将其包含在Docker映像中。

docker约定建议将容器视为可执行文件,以便将解析器脚本用作Dockerfile中的默认命令:

CMD nodejs /src/parser.js

但是现在在Kuberntes中,当解析器完成时,容器随即死亡,并且将立即重新启动。

围绕这个问题,您可以将其他bash脚本指定为CMD。该脚本将无限期运行,并将每24小时运行一次解析器脚本。但是,这意味着您已经失去了图像的漂亮属性,不能仅仅这样做

docker run my-parser-image

那么,在Kuberntes中是否有一种方法可以每隔xx小时运行一次某个容器,如果它再次无法运行,该怎么办? 更广泛地说,在Kuberntes集群中运行计划的容器化作业的建议方法是什么?

1 个答案:

答案 0 :(得分:2)

一种解决方法是在Kubernetes中创建一个CronJob对象:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "0 */24 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: my-parser-cronjob
            image: my-parser-image
          restartPolicy: OnFailure

与此类似,是使用名为Job的对象,但要记住,作业只运行一次直到完成。