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

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

云計(jì)算 云原生
解釋了如何創(chuàng)建kubernetes作業(yè)和cronjobs,以及它的基礎(chǔ)知識(shí)、用例和一些提示和技巧。

本kubernetes教程解釋了如何創(chuàng)建kubernetes作業(yè)和cronjobs,以及它的基礎(chǔ)知識(shí)、用例和一些提示和技巧。

什么是Kubernetes Job?

Kubernetes job和cronjob是Kubernetes對(duì)象,主要用于短期和批處理工作負(fù)載。

kubernetes作業(yè)對(duì)象基本上部署了一個(gè)pod,但它是為了完成而運(yùn)行的,而不是像deployment、replicasets、復(fù)制控制器和DaemonSets這樣的對(duì)象,它們是持續(xù)運(yùn)行的。

這意味著,作業(yè)將一直運(yùn)行,直到作業(yè)中指定的任務(wù)完成,如果pods給出退出代碼0,則作業(yè)將退出。該任務(wù)可以是shell腳本執(zhí)行、API調(diào)用或執(zhí)行數(shù)據(jù)轉(zhuǎn)換并將其上傳到云存儲(chǔ)的java python執(zhí)行。

然而,在正常的Kubernetes部署中,無論退出代碼如何,部署對(duì)象都會(huì)在終止或拋出錯(cuò)誤時(shí)創(chuàng)建新的pod,以保持部署所需的狀態(tài)。

在作業(yè)運(yùn)行期間,如果承載pod的節(jié)點(diǎn)失敗,作業(yè)pod將自動(dòng)重新調(diào)度到另一個(gè)節(jié)點(diǎn)。

Kubernetes Jobs和CronJobs用例

Kubernetes作業(yè)的最佳用例是:

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

在我參與的一個(gè)項(xiàng)目中,我們將Kubernetes作業(yè)廣泛用于ETL工作負(fù)載。

如何創(chuàng)建Kubernetes作業(yè)

在這個(gè)例子中,我將使用一個(gè)Ubuntu容器,它運(yùn)行一個(gè)shell腳本,該腳本有一個(gè)for循環(huán),根據(jù)您傳遞給容器的參數(shù)回顯消息。參數(shù)應(yīng)該是一個(gè)數(shù)字,決定循環(huán)運(yùn)行的次數(shù)以回顯消息。

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

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

讓我們從一個(gè)簡(jiǎn)單設(shè)置的作業(yè)開始。

步驟1:創(chuàng)建一個(gè)任務(wù)。使用我們自定義的Docker映像,以100作為命令參數(shù)。值100將作為參數(shù)傳遞給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創(chuàng)建一個(gè)Job.yaml文件。Job部署在默認(rèn)名稱空間中。

kubectl apply -f job.yaml

步驟3:使用kubectl獲取Job的狀態(tài)。

kubectl get jobs

步驟4:現(xiàn)在,使用kubectl獲取pod列表。

kubectl get po

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

kubectl logs kubernetes-job-example-bc7s9 -f

您應(yīng)該看到如下所示的輸出。

多個(gè)Job Pod和并行性

在部署作業(yè)時(shí),您可以讓它在多個(gè)具有并行性的pod上運(yùn)行。

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

completions: 6
parallelism: 2
  • completions: 6  指定 job 需要成功運(yùn)行 Pods 的次數(shù)為 6
  • parallelism: 3  指定 job 并發(fā)運(yùn)行 Pods 的數(shù)量為 3

下面是帶有這些參數(shù)的清單文件。

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處理的一個(gè)用例是消息隊(duì)列上的批處理操作。假設(shè)您有一個(gè)消息隊(duì)列,其中在每天的特定時(shí)間要處理數(shù)千條消息。

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

生成Kubernetes Job的隨機(jī)名稱

你不能使用單一的Job清單文件創(chuàng)建多個(gè)Job。Kubernetes 會(huì)拋出一個(gè)錯(cuò)誤,指出已經(jīng)存在同名的 Job。

為了解決這個(gè)問題,你可以在元數(shù)據(jù)中添加 generateName參數(shù)。例如:

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

在上述示例中,每次運(yùn)行該清單時(shí),都會(huì)創(chuàng)建一個(gè)名稱以 kube-job- 為前綴,后跟隨機(jī)字符串的 Job。

如何創(chuàng)建 Kubernetes CronJob

如果你想在特定時(shí)間表上運(yùn)行批處理任務(wù),例如每?jī)尚r(shí)一次,你可以使用cron表達(dá)式創(chuàng)建一個(gè)Kubernetes CronJob。該任務(wù)將按照你在Job中指定的時(shí)間表自動(dòng)啟動(dòng)。

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

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

下圖顯示了 Kubernetes CronJob 的調(diào)度語法。

如果我們要將之前的Job作為CronJob每15分鐘運(yùn)行一次,可以使用以下清單。創(chuàng)建一個(gè)名為cron-job.yaml的文件,并復(fù)制以下清單內(nèi)容。

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,并從處于運(yùn)行狀態(tài)的pod或已完成的pod中獲取日志。

手動(dòng)運(yùn)行Kubernetes CronJob

在某些情況下,您可能希望以臨時(shí)方式執(zhí)行cronjob。您可以通過從現(xiàn)有的cronjob創(chuàng)建一個(gè)作業(yè)來實(shí)現(xiàn)這一點(diǎn)。

例如,如果您希望手動(dòng)觸發(fā)cronjob,那么我們應(yīng)該這樣做。

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

--from=cronjob/kubernetes-cron-job將復(fù)制cronjob模板并創(chuàng)建一個(gè)名為manual-cron-job的作業(yè)。

幾個(gè)關(guān)鍵的Kubernetes  Job參數(shù)

還有一些關(guān)鍵參數(shù)可以根據(jù)需要用于kubernetes Job/cronjobs。讓我們各看一看:

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

總結(jié)

Kubernetes Job和CronJob是處理批處理任務(wù)和周期性任務(wù)的強(qiáng)大工具。通過定義相應(yīng)的YAML文件,并使用kubectl命令創(chuàng)建和管理這些任務(wù),可以輕松實(shí)現(xiàn)復(fù)雜的任務(wù)調(diào)度和執(zhí)行。希望這篇指南能幫助你快速上手Kubernetes Job和CronJob,提升你的容器編排能力。

Reference:

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

責(zé)任編輯:趙寧寧 來源: 攻城獅成長(zhǎng)日記
相關(guān)推薦

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

云原生服務(wù)器優(yōu)化

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標(biāo)簽

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2023-03-06 07:19:50

2021-04-25 10:26:58

云計(jì)算云原生

2020-12-22 07:42:05

云原生開源項(xiàng)目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云原生

2019-08-14 23:52:51

Kubernetes網(wǎng)關(guān)API
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩在线精品视频 | 日日草天天干 | 精品1区2区 | 91精品国产91久久久 | 欧美视频三区 | www四虎影视 | 日日操夜夜干 | 精品国产乱码久久久久久丨区2区 | 精品久久国产视频 | 人人干人人干人人干 | 男女爱爱福利视频 | 精品1区| 在线观看国产视频 | 精品一区二区免费视频 | 日韩精品一区二区三区免费视频 | 久久精品一区 | 国产精品中文在线 | 精品国产一区二区久久 | 久久com| 北条麻妃99精品青青久久 | 欧美一区二区三区在线观看 | 中文成人无字幕乱码精品 | 天天操天天干天天曰 | 久久99精品视频 | 国产乱码一二三区精品 | 欧美激情视频一区二区三区在线播放 | 国产精品不卡 | 国产高清一二三区 | 午夜男人视频 | 国产精品久久久久永久免费观看 | 亚洲视频在线观看免费 | 精品免费观看 | 久久久久久蜜桃一区二区 | 日韩电影一区二区三区 | 秋霞在线一区 | 视频一二三区 | 亚洲精品久久久久久久久久久久久 | 欧美一区二区三区在线观看 | 亚洲精品99| 开操网 | 精品国产18久久久久久二百 |