iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0

昨天講完了 Pod 的進階版了,接著就要來講一些類似 Pod 但是比較特殊的資源,就是 Job & CronJob 。

Job

首先先說 Job ,主要就是負責處理單次的任務,例如初始化或是手動備份之類的操作,這種操作就不適合使用 Pod 來處理,更適合用 Job 來處理。

而我們同樣使用 YAML 檔來建立 Job 。

apiVersion: batch/v1
kind: Job
metadata:
  name: myjob
spec:
  template:
    metadata:
      name: myjob
    spec:
      restartPolicy: OnFailure
      ttlSecondsAfterFinished: 10  # 完成後多久會被自動刪除
      containers:
        - name: counter
          image: ubuntu:20.04
          command: [bash, -c, "for i in {1..100} ; do echo $i ; done ; "]

大致的操作同樣是 Pod 外面包一層殼,使其更適合處裡單次的任務。使用 Job 的時候我們透過以下指令來查看。

$ kubectl get jobs
# or
$ kubectl get pods  # 只有執行中會看到

這樣就可以將簡單快速地處裡完單次的任務。

CronJob

那如果我們有定時的任務需要處理的話呢?

這時候就需要 CronJob 來幫我們處理了,例如定時備份之類的任務,我們可以設定多久處理一次,像是每天備份一次。

我們同樣使用 YAML 檔來建立 CronJob 。

apiVersion: batch/v1
kind: CronJob
metadata:
  name: mycronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          ttlSecondsAfterFinished: 10
          containers:
            - name: counter
              image: ubuntu:20.04
              command: [bash, -c, "for i in {1..100} ; do echo $i ; done ; "]

CronJob 也是類似 Job 外面再包一層殼,接著定時透過 Pod 處裡任務。使用 CronJob 的時候我們透過以下指令來查看。

$ kubectl get cronjobs
# or
$ kubectl get cj
# or
$ kubectl get pods  # 只有執行中會看到

這樣就可以定時的處理任務。

詳細設定可參考官方文件 JobCronJob

那麼就先到這邊, Job 跟 CronJob 在處理某些小任務時非常好用,使用上也不太難。

大家掰~掰~


上一篇
Day 20 ReplicaSet & Deployment
下一篇
Day 22 Ingress
系列文
30天漫遊雲端之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言