docker - Kubernetes集群中计划作业的推荐架构是什么?

标签 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集群中运行计划的容器化作业的建议方法是什么?

最佳答案

一种解决方法是在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的对象,但请记住,作业仅运行一次直至完成。

关于docker - Kubernetes集群中计划作业的推荐架构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483828/

相关文章:

未找到 PHP 文件,应根据配置的 vHost 找到该文件

spring-boot - 使用 ubuntu 在 windows docker 中运行本地 spring boot 应用程序

Docker 端口未映射

Docker 撰写绑定(bind)失败 : port is already allocated

Kubernetes AntiAffinity - 限制每个节点的相同 Pod 的最大数量

kubernetes - 在不存在的情况下将 `serviceAccountName`设置为 `default`

kubernetes - Kubernetes仅设置容器资源限制意味着资源请求的值相同

google-cloud-platform - 你能在文件夹/前缀级别为谷歌云存储桶设置生命周期策略吗?

google-cloud-platform - 是否有一个选项可以控制 GCP Autoscaling 中的最新实例是终止还是旧实例

python - 闲置一段时间后的性能