ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

K8S CronJob简单入门,和手动重复操作Say Goodbye!

2021-05-14 12:03:55  阅读:247  来源: 互联网

标签:cronjob Kubernetes job CronJob cron Say Goodbye spec


有时,调度一个应用程序进程、一些重复的操作(如发送邮件、告警、验证等)是极为必要的。在server上,我们通常使用一个cron,它极易设置和维护。如果你对此还不甚了解,可以访问以下链接,你需要知道的所有关于cron的信息都在此:
https://en.wikipedia.org/wiki/Cron

在使用Docker的时候,你可以运行crontab来完成以上操作,但当你使用Kubernetes应该使用什么组件来进行上述操作呢?

实际上,Kubernetes的运行方式有所不同,因为在负载均衡的情况下可能有一个或多个相同服务的实例,而不管启动多少个实例crontab仅运行一次。另一方面,我们需要crontab为一个或多个pod的每个进程都运行一次。在Kubernetes中有一个称为CronJob的特性解决了这一问题。

本文将介绍CronJob如何工作及其限制条件,最后给出几个tips来帮助你避免常见错误。

以下示例均基于kind。

如何创建CronJob:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: my-cron-job
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: my-cron-job
            image: curlimages/curl
            resources:
              limits:
                cpu: "1"
                memory: "300Mi"
              requests:
                cpu: "1"
                memory: "300Mi"
            args:
            - /bin/sh
            - -c
            - date; echo "Starting an example of CronJob"; resp=$(curl -I --http2 https://www.google.com) ; echo $resp; exit 0
          restartPolicy: Never
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 3

CronJob已经创建,它每分钟运行一个curl镜像。

同时,你需要设置资源限制(如CPU和内存),如果你将AWS、Azure或GCP实例作为args,最好的可视化方式是在Google上进行简单的curl即可。

这一实例永远不会重启,而且成功和失败的历史job都有一个限制,在本例中这一次数设置为3。

  • spec.successfulJobsHistoryLimit:要保留的成功完成的cronjob的数量
  • spec.failedJobsHistoryLimit:要保留的失败的cronjob的数量

如果你想了解更多关于CronJob API的信息,我强烈建议你阅读以下链接中的内容:
https://docs.koki.io/short/resources/cron-job

现在,运行以下命令以在Kubernetes中应用你的CronJob。

$ kubectl apply -f cronjob.yml

如果没有错误发生,你能使用以下命令看到你最近配置的cronjob:

$ kubectl get cronjob

我使用Lens来可视化所有可用的cronjob,它对Kubernetes中的跟踪和监控都非常有用。

图片

查看日志:

图片

运行以下命令即可删除这一条目:

$ kubectl delete cronjob my-cron-job

在本例中运行了一个简单的Cron以及一个实例。

我发现CronJob有一个局限性是需要通过在每个进程中添加一行来为同一进程调度多个CronJob。但是,Kubernetes 1.8 beta中不提供CronJob,你必须使用并行机制(parallelism)复制相同的CronJob。对于另一个调度,你需要创建另一个cron条目。我期待着将来有机会为同一进程调度多个模式。

结 论

Kubernetes CronJob非常有用并且易于学习,你可访问以下链接阅读和了解有关API参数的更多信息,并运行一些测试以更好地了解其工作原理:
https://docs.koki.io/short/resources/cron-job/

原文链接: https://dzone.com/articles/kubernetes-cronjob-an-introduction

标签:cronjob,Kubernetes,job,CronJob,cron,Say,Goodbye,spec
来源: https://blog.51cto.com/u_12462495/2774907

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有