成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

云原生之 K8S 系列:如何創建 Kubernetes job 和 Cronjobs 入門指南

云計算 云原生
解釋了如何創建kubernetes作業和cronjobs,以及它的基礎知識、用例和一些提示和技巧。

本kubernetes教程解釋了如何創建kubernetes作業和cronjobs,以及它的基礎知識、用例和一些提示和技巧。

什么是Kubernetes Job?

Kubernetes job和cronjob是Kubernetes對象,主要用于短期和批處理工作負載。

kubernetes作業對象基本上部署了一個pod,但它是為了完成而運行的,而不是像deployment、replicasets、復制控制器和DaemonSets這樣的對象,它們是持續運行的。

這意味著,作業將一直運行,直到作業中指定的任務完成,如果pods給出退出代碼0,則作業將退出。該任務可以是shell腳本執行、API調用或執行數據轉換并將其上傳到云存儲的java python執行。

然而,在正常的Kubernetes部署中,無論退出代碼如何,部署對象都會在終止或拋出錯誤時創建新的pod,以保持部署所需的狀態。

在作業運行期間,如果承載pod的節點失敗,作業pod將自動重新調度到另一個節點。

Kubernetes Jobs和CronJobs用例

Kubernetes作業的最佳用例是:

  • 批處理:假設您希望每天運行一次批處理任務,或者在特定的計劃中運行一次。它可以是從存儲或數據庫中讀取文件,并將其提供給服務以處理文件。
  • 操作/特別任務:假設您想要運行運行數據庫清理活動的腳本/代碼,或者甚至備份kubernetes集群本身。

在我參與的一個項目中,我們將Kubernetes作業廣泛用于ETL工作負載。

如何創建Kubernetes作業

在這個例子中,我將使用一個Ubuntu容器,它運行一個shell腳本,該腳本有一個for循環,根據您傳遞給容器的參數回顯消息。參數應該是一個數字,決定循環運行的次數以回顯消息。

例如,如果傳遞100作為參數,shell腳本將回顯消息100次,容器將退出。

你可以在這里查看Dockerfile和shell腳本-> kube-job-example Docker configs[1]

讓我們從一個簡單設置的作業開始。

步驟1:創建一個任務。使用我們自定義的Docker映像,以100作為命令參數。值100將作為參數傳遞給docker ENTRYPOINT腳本。

apiVersion: batch/v1 
kind: Job 
metadata:   
  name: kubernetes-job-example   
  labels:     
    jobgroup: jobexample 
spec:   
  template:     
    metadata:       
      name: kubejob       
      labels:         
        jobgroup: jobexample     
    spec:       
      containers:       
      - name: c         
        image: devopscube/kubernetes-job-demo:latest         
        args: ["100"]       
      restartPolicy: OnFailure

步驟2:讓我們使用kubectl創建一個Job.yaml文件。Job部署在默認名稱空間中。

kubectl apply -f job.yaml

步驟3:使用kubectl獲取Job的狀態。

kubectl get jobs

步驟4:現在,使用kubectl獲取pod列表。

kubectl get po

步驟5:您可以使用kubectl獲取Job pod日志。將pod名稱替換為您在輸出中看到的pod名稱。

kubectl logs kubernetes-job-example-bc7s9 -f

您應該看到如下所示的輸出。

多個Job Pod和并行性

在部署作業時,您可以讓它在多個具有并行性的pod上運行。

例如,在一個Job中,如果您希望并行運行6個pod和2個pod,則需要將以下兩個參數添加到Job清單中。

completions: 6
parallelism: 2
  • completions: 6  指定 job 需要成功運行 Pods 的次數為 6
  • parallelism: 3  指定 job 并發運行 Pods 的數量為 3

下面是帶有這些參數的清單文件。

apiVersion: batch/v1
kind: Job
metadata:
  name: kubernetes-parallel-job
  labels:
    jobgroup: jobexample
spec:
  completions: 6
  parallelism: 2
  template:
    metadata:
      name: kubernetes-parallel-job
      labels:
        jobgroup: jobexample
    spec:
      containers:
      - name: c
        image: devopscube/kubernetes-job-demo:latest
        args: ["100"]
      restartPolicy: OnFailure

并行pod處理的一個用例是消息隊列上的批處理操作。假設您有一個消息隊列,其中在每天的特定時間要處理數千條消息。

您可以將消息處理代碼作為具有并行性的Job運行,以加快處理速度。盡管所有pod使用相同的消息處理代碼,但每個pod將處理來自隊列的不同消息。

生成Kubernetes Job的隨機名稱

你不能使用單一的Job清單文件創建多個Job。Kubernetes 會拋出一個錯誤,指出已經存在同名的 Job。

為了解決這個問題,你可以在元數據中添加 generateName參數。例如:

apiVersion: batch/v1
kind: Job
metadata:
  generateName: kube-job-
  labels:
    jobgroup: jobexample

在上述示例中,每次運行該清單時,都會創建一個名稱以 kube-job- 為前綴,后跟隨機字符串的 Job。

如何創建 Kubernetes CronJob

如果你想在特定時間表上運行批處理任務,例如每兩小時一次,你可以使用cron表達式創建一個Kubernetes CronJob。該任務將按照你在Job中指定的時間表自動啟動。

以下是如何指定cron時間表。你可以使用crontab生成器來生成你自己的時間表。

schedule: "0,15,30,45 * * * *"

下圖顯示了 Kubernetes CronJob 的調度語法。

如果我們要將之前的Job作為CronJob每15分鐘運行一次,可以使用以下清單。創建一個名為cron-job.yaml的文件,并復制以下清單內容。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
    name: kubernetes-cron-job
spec:
  schedule: "0,15,30,45 * * * *"
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: cron-batch-job
        spec:
          restartPolicy: OnFailure
          containers:
          - name: kube-cron-job
            image: devopscube/kubernetes-job-demo:latest
            args: ["100"]

讓我們使用kubectl部署cronjob。

kubectl create -f cron-job.yaml

列出cronjob:

kubectl get cronjobs

要檢查Cronjob日志,您可以列出Cronjob pod,并從處于運行狀態的pod或已完成的pod中獲取日志。

手動運行Kubernetes CronJob

在某些情況下,您可能希望以臨時方式執行cronjob。您可以通過從現有的cronjob創建一個作業來實現這一點。

例如,如果您希望手動觸發cronjob,那么我們應該這樣做。

kubectl create job --from=cronjob/kubernetes-cron-job manual-cron-job

--from=cronjob/kubernetes-cron-job將復制cronjob模板并創建一個名為manual-cron-job的作業。

幾個關鍵的Kubernetes  Job參數

還有一些關鍵參數可以根據需要用于kubernetes Job/cronjobs。讓我們各看一看:

  • failedJobHistoryLimit和successfulJobsHistoryLimit:根據您提供的保留數刪除失敗和成功的作業歷史記錄。當您嘗試列出作業時,這對于減少所有失敗的條目非常有用。例如:failedJobHistoryLimit: 5 successfulJobsHistoryLimit: 10
  • backoffLimit:如果您的pod失敗,重試的總次數。
  • activedeadlinesseconds:如果您想要指定cronjob運行時間的硬限制,可以使用此參數。例如,如果您只想運行cronjob一分鐘,則可以將其設置為60。

總結

Kubernetes Job和CronJob是處理批處理任務和周期性任務的強大工具。通過定義相應的YAML文件,并使用kubectl命令創建和管理這些任務,可以輕松實現復雜的任務調度和執行。希望這篇指南能幫助你快速上手Kubernetes Job和CronJob,提升你的容器編排能力。

Reference:

[1]kube-job-example Docker configs: https://github.com/devopscube/Kubernetes-jobs-example/tree/master/Docker

責任編輯:趙寧寧 來源: 攻城獅成長日記
相關推薦

2024-06-12 13:21:06

2024-06-18 13:22:42

Nginx云原生Kubernetes

2024-06-06 09:19:09

2024-09-26 09:50:07

2022-04-07 10:17:18

云原生服務器優化

2023-03-07 07:56:37

Sqoopk8s底層

2025-01-03 08:08:56

2022-07-18 18:48:32

Kubernetes云原生

2022-09-05 08:26:29

Kubernetes標簽

2022-04-22 13:32:01

K8s容器引擎架構

2023-03-06 07:19:50

2021-04-25 10:26:58

云計算云原生

2020-12-22 07:42:05

云原生開源項目k8s

2020-05-12 10:20:39

K8s kubernetes中間件

2023-03-03 07:54:21

2024-06-26 00:22:35

2022-11-08 08:55:31

2022-10-14 07:42:50

LuceneHTTPWeb

2023-09-06 08:12:04

k8s云原生

2023-01-30 07:51:38

云原生Kubernetesk8s
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美国产精品一区二区三区 | 国产成人综合网 | 欧美成视频 | 成人精品在线观看 | 中文在线视频观看 | 国产欧美日韩精品一区 | 91日韩在线 | hitomi一区二区三区精品 | 91影院| 久久精品久久久久久 | 午夜激情小视频 | 九九在线| 91精品国产综合久久精品 | 九九精品网 | 欧美日韩精品影院 | 日韩av成人在线 | 成人免费视频网站在线观看 | 欧洲一区在线观看 | 亚洲va欧美va人人爽午夜 | 97免费视频在线观看 | 免费特黄视频 | 欧美成人免费在线 | 亚洲欧洲精品在线 | 精品国产伦一区二区三区观看体验 | 国产伦精品一区二区三毛 | 天天视频成人 | 我要看黄色录像一级片 | 色婷婷亚洲国产女人的天堂 | 又黑又粗又长的欧美一区 | 狠狠躁夜夜躁人人爽天天高潮 | 亚洲图片视频一区 | 亚洲一级在线 | 一区二区三区四区毛片 | 狠狠综合久久av一区二区老牛 | 男女视频91 | 日韩三级免费观看 | 真人女人一级毛片免费播放 | 国产乱性 | 欧美专区在线 | zzzwww在线看片免费 | 色嗨嗨 |