今天要来实作 Run automated tasks with cron jobs 这个 Task
已有 k8s 执行个体
在这个章节将会使用 minikube
布署一个每分钟送一个 Hello 讯息到 Console 的任务到 k8s cluster 上
设定 cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
建立一个 CronJob
设定名称为 hello
设定排程周期为 "*/1 * * * *" 每分钟执行一次的意思, 语法如下
# ┌────────────────── timezone (optional)
# | ┌───────────── minute (0 - 59)
# | │ ┌───────────── hour (0 - 23)
# | │ │ ┌───────────── day of the month (1 - 31)
# | │ │ │ ┌───────────── month (1 - 12)
# | │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# | │ │ │ │ │ 7 is also Sunday on some systems)
# | │ │ │ │ │
# | │ │ │ │ │
# CRON_TZ=UTC * * * * *
在 container 部份的设定是使用 busybox 的 image (有linux shell 的工具)
执行内容为使用 /bin/sh 印出现在日期以及 Hello from the Kubernetes cluster
特别的是 CronJob apiVersion 的值在 1.21.* 版之後就可以使用 batch/v1
因为我这边使用的 minikube 是使用 1.20.0 版本所以只能用 batch/v1beta1
建立布署指令
kubectl apply -f cronjob.yaml
查询布署指令
kubectl get cronjob hello
找出 job 名称
kubectl get jobs --watch
每分钟会产生一个 Job
透过 job name 找到 Pod 验证内容
pods=$(kubectl get pods --selector=job-name=hello-1633100400 --output=jsonpath={.items[*].metadata.name})
kubectl logs $pods
kubectl delete cronjob hello
有几个特别的可以设定在 Job tempate
这个栏位代表要启动 CronJob 的最晚时间
假设超过这个时间 CronJob 没有执行, 之後就不会执行
如果没有设定代表 CronJob 没有 Deadline
这个栏位是用来指定是否能够同时执行多个由 CronJob 产生的 Job
设定值如下:
Allow(预设值) 可以同时运行
Forbid 不允许多个 Job 同时运行
Replace 假设在新的 Job 要执行时, 旧的 Job 还没执行结束, 则 CronJob 会用新的 Job 取代目前正在执行的 Job
这个栏位是用来指定多少最新完成的 Job 能够被保留
预设值是 3, 代表预设只保留最新 3 个完成的
这个栏位是用来指定多少最新失败的 Job 能够被保留
预设值是 1, 代表预设只保留最新 1 个失败的
<<: Day16 - [丰收款] 取得PayToken的最後一哩路很慢长
目的 不再限制一个工厂(物件)建立许多产品(物件),而是转变成一个产品(物件)对应一个工厂(物件),...
再来要讲到管理工具中耳熟能详的工具之一,甘特图。Gantt Chart在规划专案时,几乎就是所以人第...
FB登入 第10步:开启 /app/res/values/strings.xml 档案。 FB会自动...
我们已将资料集上传到 nilvana 的 Vision Studio 中, 也知道标注格式的种类与基...
昨天解说 Vue 如何制作 Web-Component 今天来说明一下 , 那 React 如何制作...