91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

怎么創建K8SJob及搞定批處理

怎么創建K8S Job及搞定批處理,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創新互聯公司-專業網站定制、快速模板網站建設、高性價比日土網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式日土網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋日土地區。費用合理售后完善,10余年實體公司更值得信賴。

Kubernetes jobs主要是針對短時和批量的工作負載。它是為了結束而運行的,而不是像deployment、replicasets、replication controllers和DaemonSets等其他對象那樣持續運行。

下面將介紹如何創建Kubernetes jobs和cronjobs,以及一些小技巧。

Kubernetes Jobs會一直運行到Job中指定的任務完成。也就是說,如果pods給出退出代碼0,那么Job就會退出。而在正常的Kubernetes中,無論退出代碼是什么,deployment對象在終止或出現錯誤時都會創建新的pod,以保持deployment的理想狀態。

在job運行過程中,如果托管pod的節點發生故障,Job pod將被自動重新安排到另一個節點。

Kubernetes Jobs用例

對于Kubernetes Jobs最好的用例實踐是:

  1. 批處理任務:比如說你想每天運行一次批處理任務,或者在指定日程中運行。它可能是像從存儲庫或數據庫中讀取文件那樣,將它們分配給一個服務來處理文件。

  2. 運維/ad-hoc任務:比如你想要運行一個腳本/代碼,該腳本/代碼會運行一個數據庫清理活動,甚至備份一個Kubernetes集群。

如何創建Kubernetes Job

在本例中,我們將使用Ubuntu 容器來運行一個帶有for循環的shell腳本,并根據你傳遞給容器的參數來呼應消息。這個參數是一個數字,決定shell腳本循環應該運行多少次。

例如,如果你傳遞了參數100,那么shell腳本將呼應消息100次然后容器將會退出。

你可以訪問以下鏈接查看Dockerfile和shell腳本: https://github.com/devopscube/Kubernetes-jobs-example/tree/master/Docker

我們先從一個簡單設置的job開始。

Step1:使用自定義的Docker鏡像創建一個job.yaml文件,命令參數為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

Step2:使用kubectl創建一個job.yaml文件的job

kubectl apply -f job.yam

Step3:使用kubectl檢查job的狀態

kubectl get jobs

Step4:使用kubectl獲取pod列表

kubectl get po

Step5:使用kubectl獲取job pod 日志。使用你在輸出中看到的Pod名稱替換原本的Pod名稱。

kubectl logs kubernetes-job-example-bc7s9 -f

怎么創建K8S Job及搞定批處理

并行運行多Job pods

當一個job被部署后,你可以讓它在多個Pod上并行運行。例如,在一個job中如果你想要運行6個 pods,同時并行運行2個pods,你需要添加以下2個參數到你的job manifets中:

completions: 6
parallelism: 2

以下是帶有那些參數的manifest:

apiVersion: batch/v1
kind: Job
metadata:
  name: kubernetes-parallel-job
  labels:
    jobgroup: jobexample
spec:
  completions: 5
  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

為Kubernetes Job生成隨機名稱

你不能從一個job manifest文件中創建多個job,因為Kubernetes會報錯,說存在一個同名的job。為了規避這個問題,你可以在元數據中添加 generateName名稱參數。

例如:

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

在上方示例中,每次你運行該manifest,job將以kube-job-作為前綴,后面跟著一個隨機字符串來創建。

如何創建Kubernetes CronJob

如果你想按照特定的時間表運行批處理job,例如,每2個小時運行一次。你可以用cron表達式創建一個Kubernetes cronjob。Job會按照你在job中提到的時間表自動啟動。

下面我們將介紹如何指定一個cron計劃,你可以使用crontab生成器(https://crontab-generator.org/)來生成自己的時間計劃。

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

下圖顯示了Kubernetes cronjob schedule語法。怎么創建K8S Job及搞定批處理 如果我們以cronjob的形式每15分鐘運行一次我們之前的job,manifest應該如下所示。創建一個名為cron-job.yaml的文件,并復制以下manifest:

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 列出cronjobs:

kubectl get cronjobs

你可以列出cronjob pod并從處于運行狀態或完成狀態的pods中獲取日志來檢查Cronjob日志。

手動運行Kubernetes CronJob

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

例如,如果你想手動觸發一個cronjob,我們應該這樣做:

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

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

Kubernetes Job的關鍵參數

根據你的需求,你還可以使用kubernetes jobs/cronjobs的幾個關鍵參數:

  1. failedJobHistoryLimit & successfulJobsHistoryLimit:根據你提供的保留數量刪除失敗和成功的job歷史記錄。當你嘗試列出job時,這對于減少所有失敗的條目非常有用。例如:

  2. backoffLimit:如果你的Pod失敗,重試的總次數。

  3. activeDeadlineSeconds:如果你想對cronjob的運行時間進行硬性限制,可以使用此參數。例如,如果你想只運行1分鐘的cronjob,你可以將其設置為60。

關于怎么創建K8S Job及搞定批處理問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創新互聯行業資訊頻道了解更多相關知識。


新聞標題:怎么創建K8SJob及搞定批處理
轉載來源:http://www.yuzhuanjia.cn/article/jsgpcd.html
主站蜘蛛池模板: 国产AV无码熟妇人妻麻豆 | 福利视频综合一区二区三区四区 | av在线播放黄片 | 暴力强j激烈反抗av 暴露放荡的娇妻 | 91麻豆免 | 国产aaa免费视频国产 | 91久久精品都在这 | 91国内偷拍久久久 | 久久国产精品久久 | 果冻传媒吴梦梦精品视频 | 高清国产精品久久 | 97免费在线视频 | 午夜欧美 | 91.com在线观看 | 99久久精品国产一区二区三区 | 国产av女人一区二区精品 | av一区二区中文字幕 | 91午夜福利国产在 | 91久久视频平台是否值得尝试 | 91免费国频在线看 | 高清无码精品视频 | 一区二区又大又黄又嫩 | 成人性欧美 | 91九色熟女 | 国产69无码一区 | av激情亚洲男人 | 午夜福利视频合集1000 | 91伊人| 一区二区三区欧美 | 91久久夜 | 高清不卡欧美性理论片少妇性色生活片 | 97人妻无码 | 懂你的影院在线观看 | 爆乳女神少妇精品一区 | 91青青草 | 97无码欧美熟妇人妻蜜 | a级大胆欧美人体大胆666 | 国产宾馆调教在线视频 | 91亚洲超碰无码中文字幕 | 91嫩草亚洲精品 | 午夜无码乱码在线观看 |