范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Kubernetes中的Job(工作计划)ampampampCronJob(定时工作计划)Demo实战

  写在前面本文内容涉及: 工作计划job  的创建,参数解析,并行多work  的job  创建定时工作计划cron job  的创建Demo个别地方使用了 ansible  ,不影响阅读
  很多道理我憋在心里,想要跟这个世界好好的说上一说! ——烽火戏诸侯《剑来》 Job&CronJobJob:批处理工作计划
  Kubernetes从1.2版本  开始支持批处理类型的应用,我们可以通过Kubernetes Job  资源对象来定义并启动一个批处理任务。
  批处理任务通常 并行(或者串行)  启动多个计算进程去处理一批工作项(work item)  处理完成后,整个批处理任务结束。
  K8s官网中这样描述  : Job 会创建一个或者多个 Pods,并将继续重试 Pods 的执行,直到指定数量的 Pods 成功终止。 随着 Pods 成功结束,Job 跟踪记录成功完成的 Pods 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pods。 挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。
  一种简单的使用场景下,你会创建一个 Job 对象以便以一种可靠的方式运行某 Pod 直到完成。 当第一个 Pod 失败或者被删除(比如因为节点硬件失效或者重启)时,Job 对象会启动一个新的 Pod。也可以使用 Job 以并行的方式运行多个 Pod。
  考虑到批处理的并行问题, Kubernetes将Job分以下三种类型。
  类型
  描述
  Non-parallel Jobs
  通常 一个Job只启动一个Pod  ,除非Pod异常,才会重启该Pod  ,一旦此Pod正常结束, Job将结束  。
  Parallel Jobs with a fixed completion count
  并行Job会启动多个Pod  ,此时需要设定Job的.spec.completions  参数为一个正数,当正常结束的Pod数量达至此参数设定的值后, Job结束  。此外, Job的.spec.parallelism参数用来控制并行度  ,即同时启动几个Job来处理Work Item  .
  Parallel Jobs with a work queue
  任务队列方式的并行Job  需要一个独立的Queue  , Work item都在一个Queue中存放  ,不能设置Job的.spec.completions参数  ,此时Job有以下特性。
  每个Pod都能独立判断和决定是否还有任务项需要处理。
  如果某个Pod正常结束,则Job不会再启动新的Pod.
  如果一个Pod成功结束,则此时应该不存在其他Pod还在工作的情况,它们应该都处于即将结束、退出的状态。
  如果所有Pod都结束了,且至少有一个Pod成功结束,则整个Job成功结束。
  嗯,我们就第一个,第二搞一个Demo,第三中之后有时间搞,其实就是资源配置参数的问题
  环境准备  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl config set-context  $(kubectl config current-context) --namespace=liruiling-job-create Context "kubernetes-admin@kubernetes" modified.  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  create  ns liruiling-job-create namespace/liruiling-job-create created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $vim myjob.yaml 创建一个job
  创建一个Job,执行 echo "hello jobs"
  myjob.yaml apiVersion: batch/v1 kind: Job metadata:   creationTimestamp: null   name: my-job spec:   template:     metadata:       creationTimestamp: null     spec:       containers:       - command:         - sh         - -c         - echo "hello jobs"         - sleep 15         image: busybox         name: my-job         resources: {}       restartPolicy: Never status: {}  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  apply  -f myjob.yaml job.batch/my-job created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME              READY   STATUS              RESTARTS   AGE my-job--1-jdzqd   0/1     ContainerCreating   0          7s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs NAME     COMPLETIONS   DURATION   AGE my-job   0/1           17s        17s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME              READY   STATUS      RESTARTS   AGE my-job--1-jdzqd   0/1     Completed   0          24s
  STATUS   状态变成 Completed  意味着执行成功,查看日志 [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs NAME     COMPLETIONS   DURATION   AGE my-job   1/1           19s        46s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl logs my-job--1-jdzqd hello jobs  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $ job的配置参数解析
  job的restart策略 restartPolicy: Never Nerver  : 只要任务没有完成,则是新创建pod运行,直到job完成 会产生多个pod  OnFailure  :  只要pod没有完成,则会重启pod,直到job完成
  activeDeadlineSeconds:最大可以运行时间  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl explain jobs.spec | grep act    activeDeadlineSeconds              may be continuously active before the system tries to terminate it; value      given time. The actual number of pods running in steady state will be less      false to true), the Job controller will delete all active Pods associated  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $vim myjobact.yaml
  使用 activeDeadlineSeconds:最大可以运行时间  创建一个job
  myjobact.yamlapiVersion: batch/v1 kind: Job metadata:   creationTimestamp: null   name: my-job spec:   template:     metadata:       creationTimestamp: null     spec:       activeDeadlineSeconds: 5 #最大可以运行时间       containers:       - command:         - sh         - -c         - echo "hello jobs"         - sleep 15         image: busybox         name: my-job         resources: {}       restartPolicy: Never status: {}
  超过5秒任务没有完成,所以从新创建一个pod运行  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl delete  -f myjob.yaml job.batch "my-job" deleted  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  apply  -f myjobact.yaml job.batch/my-job created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME              READY   STATUS              RESTARTS   AGE my-job--1-ddhbj   0/1     ContainerCreating   0          7s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl get jobs NAME     COMPLETIONS   DURATION   AGE my-job   0/1           16s        16s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME              READY   STATUS              RESTARTS   AGE my-job--1-ddhbj   0/1     Completed           0          23s my-job--1-mzw2p   0/1     ContainerCreating   0          3s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME              READY   STATUS      RESTARTS   AGE my-job--1-ddhbj   0/1     Completed   0          48s my-job--1-mzw2p   0/1     Completed   0          28s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl get jobs NAME     COMPLETIONS   DURATION   AGE my-job   0/1           55s        55s
  其他的一些参数
  parallelism: N 一次性运行N个pod
  completions: M job结束需要成功运行的Pod个数,即状态为Completed的pod数
  backoffLimit: N 如果job失败,则重试几次
  parallelism:一次性运行几个pod,这个值不会超过completions的值。创建一个并行多任务的JobapiVersion: batch/v1 kind: Job metadata:   creationTimestamp: null   name: my-job spec:   backoffLimit: 6  #重试次数   completions: 6 # 运行几次   parallelism: 2 # 一次运行几个   template:     metadata:       creationTimestamp: null     spec:       containers:       - command:         - sh         - -c         - echo "hello jobs"         - sleep 15         image: busybox         name: my-job         resources: {}       restartPolicy: Never status: {}
  创建一个有参数的job  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  apply  -f myjob-parma.yaml job.batch/my-job created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods jobs Error from server (NotFound): pods "jobs" not found  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods job Error from server (NotFound): pods "job" not found  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs NAME     COMPLETIONS   DURATION   AGE my-job   0/6           19s        19s
  查看参数设置的变化,运行6个job  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME              READY   STATUS              RESTARTS   AGE my-job--1-9vvst   0/1     Completed           0          25s my-job--1-h24cw   0/1     ContainerCreating   0          5s my-job--1-jgq2j   0/1     Completed           0          24s my-job--1-mbmg6   0/1     ContainerCreating   0          1s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs NAME     COMPLETIONS   DURATION   AGE my-job   2/6           35s        35s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs NAME     COMPLETIONS   DURATION   AGE my-job   3/6           48s        48s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $  $kubectl  get pods NAME              READY   STATUS      RESTARTS   AGE my-job--1-9vvst   0/1     Completed   0          91s my-job--1-b95qv   0/1     Completed   0          35s my-job--1-h24cw   0/1     Completed   0          71s my-job--1-jgq2j   0/1     Completed   0          90s my-job--1-mbmg6   0/1     Completed   0          67s my-job--1-njbfj   0/1     Completed   0          49s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs NAME     COMPLETIONS   DURATION   AGE my-job   6/6           76s        93s 实战:计算圆周率2000位
  命令行的方式创建一个job  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl create job job3 --image=perl  --dry-run=client -o yaml -- perl -Mbignum=bpi -wle "print bpi(500)" apiVersion: batch/v1 kind: Job metadata:   creationTimestamp: null   name: job3 spec:   template:     metadata:       creationTimestamp: null     spec:       containers:       - command:         - perl         - -Mbignum=bpi         - -wle         - print bpi(500)         image: perl         name: job3         resources: {}       restartPolicy: Never status: {}
  拉取相关镜像,命令行创建job  [root@vms81.liruilongs.github.io]-[~/ansible]  $ansible node -m shell -a "docker pull perl"  [root@vms81.liruilongs.github.io]-[~/ansible]  $kubectl create job job2 --image=perl -- perl -Mbignum=bpi -wle "print bpi(500)" job.batch/job2 created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME            READY   STATUS      RESTARTS   AGE job2--1-5jlbl   0/1     Completed   0          2m4s
  查看运行的job输出  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl logs job2--1-5jlbl 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491 Cronjob(定时任务)
  在 cronjob 的 yaml 文件里的  .spec.jobTemplate.spec   字段里,可以写 activeDeadlineSeconds   参数,指定 cronjob   所生成的 pod 只能运行多久
  Kubernetes从1.5  版本开始增加了一种新类型的Job,即类似LinuxCron的定时任务Cron Job  ,下面看看如何定义和使用这种类型的Job首先,确保Kubernetes的版本为1.8及以上  。
  在 Kubernetes 1.9  版本后,kubectl  命令增加了别名cj  来表示cronjob  ,同时kubectl set image/env  命令也可以作用在CronJob  对象上了。创建一个 Cronjob
  每分钟创建一个pod执行一个date命令  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl create cronjob test-job --image=busybox --schedule="*/1 * * * *"  --dry-run=client   -o yaml -- /bin/sh -c "date" apiVersion: batch/v1 kind: CronJob metadata:   creationTimestamp: null   name: test-job spec:   jobTemplate:     metadata:       creationTimestamp: null       name: test-job     spec:       template:         metadata:           creationTimestamp: null         spec:           containers:           - command:             - /bin/sh             - -c             - date             image: busybox             name: test-job             resources: {}           restartPolicy: OnFailure   schedule: "*/1 * * * *" status: {}
  可是使用yaml文件或者命令行的方式创建  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods No resources found in liruiling-job-create namespace.  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  apply  -f jobcron.yaml cronjob.batch/test-job configured  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get job NAME                COMPLETIONS   DURATION   AGE test-job-27330246   0/1           0s         0s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME                         READY   STATUS    RESTARTS   AGE test-job-27330246--1-xn5r6   1/1     Running   0          4s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get pods NAME                         READY   STATUS      RESTARTS   AGE test-job-27330246--1-xn5r6   0/1     Completed   0          100s test-job-27330247--1-9blnp   0/1     Completed   0          40s
  运行 --watch  命令,可以更直观地了解Cron Job定期触发任务执行的历史和现状: [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  apply  -f jobcron.yaml cronjob.batch/test-job created  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get cronjobs NAME       SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE test-job   */1 * * * *   False     0                  12s  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs --watch NAME                COMPLETIONS   DURATION   AGE test-job-27336917   0/1                      0s test-job-27336917   0/1           0s         0s test-job-27336917   1/1           25s        25s test-job-27336918   0/1                      0s test-job-27336918   0/1           0s         0s test-job-27336918   1/1           26s        26s ^C [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $kubectl  get jobs -o wide NAME                COMPLETIONS   DURATION   AGE    CONTAINERS   IMAGES    SELECTOR test-job-27336917   1/1           25s        105s   test-job     busybox   controller-uid=35e43bbc-5869-4bda-97db-c027e9a36b97 test-job-27336918   1/1           26s        45s    test-job     busybox   controller-uid=82d2e4a5-716c-42bf-bc7d-3137dd0e50e8  [root@vms81.liruilongs.github.io]-[~/ansible/k8s-jobs-create]  $

分辨率高并不代表视频画质就绝对好分辨率高就代表视频的画质好了吗?并不是这么简单,决定视频画质的因素有很多,之前有朋友问我,为什么会出现1080p的片源看起来比4K视频细节都更好的情况,这一期就来说说,影响视频画质3款扫地机器人对比评测,科沃斯X1Turbo追觅W10Pro云鲸J2自从有了这些可以自动洗拖布的机器人,真的,我的吸尘器已经是落了一层灰了,起码有半年没用过。对于我这种懒人来说,扫地机器人绝对是神器!不过这些扫地机器人厂商也真的是太卷了!出新品的频联想UEFI固件漏洞影响超100万台笔记本电脑已发现三个影响深远的统一可扩展固件接口(UEFI)安全漏洞影响各种联想消费类笔记本电脑型号,使黑客能够在受影响的设备上部署和执行固件植入。知名网络安全专家东方联盟创始人郭盛华表示,想花一点点钱升级电脑让它跑快点,这样干就没错家里的老电脑丢了可惜,转手卖也就是废品,平时对电脑使用的需求也不大,但偶尔也需要用到电脑,那就不妨给电脑升级一下配置吧,既然是老电脑了,那花多钱升级电脑配置也当然就不划算了,此时,AORUSRTX3090TI一体式水雕24G现已开售就在最近,英伟达最强的消费级显卡RTX3090Ti陆续上市了。同一时间,技嘉旗下的顶级显卡AORUSRTX3090Ti水雕也随之发布。目前,AORUSRTX3090TI一体式水雕已不走流量走话费!中国移动5G视频通话试商用,华为荣耀小米齐坐阵本文来源时代周报作者陶娅洁为吸引更多用户,拥有3。87亿5G套餐客户的通讯业老大哥中国移动不断推陈出新。近日中国移动主推5G视频通话产品,产业链合作伙伴包括华为中兴科大讯飞vivo国产机能否冲击高端?四千字详解iPhone13与荣耀Magic4Pro怎么选如果你有七千块,会入手一部256G的苹果13,还是一部荣耀Magic4Pro加上一块荣耀手表再加一个荣耀蓝牙耳机,这一套的电子大礼包呢。面对国产手机疯狂的堆料升级配置,苹果用户的坚Edge305G偷跑零售价550欧元6。5吋FHD144Hz屏幕摩托罗拉Edge(Edge30Pro)上月在美国市场发售之后,即将登陆印度和欧洲市场。而相关迹象表明该系列的标准型号也即将推出。目前一家欧洲零售商已经放出了Edge305G的售价,百元耳机高性价比,我推荐TezoLentil零豆无线蓝牙耳机价格低,品质高的百元机一音质要好带上耳机听音乐看视频甚至玩游戏,是使用者的刚需。一款合格的高性价比耳机,必须要有出彩的音质,才能给人沉浸感和愉悦感。二续航能力强出门在外,连续一个小Hinova9SE新机开售Vlog神器切换摄像头不断流,2499元起现在手机产品的摄像头功能越来越强,已经让一些小伙伴喜欢上了视频拍摄。那选择什么样的手机好呢?现在手机行业的新面孔中邮通信发布了自家的Hinova9SE,这款手机主打卖点就是视频Vl郭明錤苹果iPhone16Pro将首发搭载屏下FaceID和前置摄像头分析师郭明錤今天在推文中表示,苹果可能会在2024年推出其首款全面屏智能手机,其中iPhone16Pro将是第一款配备屏下FaceID和屏下前置摄像头的苹果设备。郭明錤称,我认为真
TikTok加强对青少年的隐私保护控制路透8月13日消息,字节跳动旗下的短视频分享应用TikTok周四宣布,对青少年进行更严格的隐私保护控制,寻求解决关于未能保护儿童免受隐藏广告和不当内容影响的批评。TikTok表示,手机运行中或下载软件时提示内存不足,什么情况又如何解决?近几年手机科技发展十分迅速,各种新技术热词不断上映,屏幕高刷新率曲面屏折叠屏16G内存5G双模海思麒麟9905G芯片和国产鸿蒙操作系统等等,现在的手机更新换代速度实在是太快了,很多维度M40专业性价比点评维度M40今年一款性价比新品旗舰手机,维度M40游戏增强版莫属,,这次的维度M40游戏增强版在电竞手机体验方面可谓做足了功课,综合表现丝毫不逊于其他专业电竞手机。时尚的不像电竞手机雷柏女性无线鼠标最少女心的鼠标鼠标作为大家办公最离不开的小物件之一,俨然已经成为了大家的刚需。今天要分享的及是一款外形科技感贼强而且颜值超高的雷柏乐萌系列气垫鼠标,少女心的设计真的超级能提升幸福感!大面积镂空的腾讯极光盒子3C简评小身板亦有大作用,三种定制模式随心选你有多久没有看电视了?想必看到这个问题的时候,很多人和笔者一样,已经好久好久没打开过了,至于为什么不打开,原因在于手机比电视方便,因为手机上可以看自己想看的各种影音资源,而电视就不中国6G迈出重要一步,北京邮电起到关键作用,被央视点名表扬在长达几十年的时间里,西方国家一直掌控着移动通讯技术的核心专利。但5G时代的到来,让我国彻底扭转了长期处于被动的局面,成功利用5G技术实现弯道超车,走在美日英等发达国家的前面。截止原来iPhone手机隐藏7个冷知识,小技巧大作用,让手机更好用虽然一直有人说不买苹果手机了,但还是忍不住每次新机发布就入手。主要还是因为iPhone手机确实很好用,使用起来不仅流畅自如,还有非常好用的隐藏功能。这里就来分享iPhone手机隐藏走近自然常数e,了解它梦幻般的神奇据资料介绍,自然常数e是欧拉(1707。4。151783。9。18)在写给哥德巴赫(1690。3。181764。11。20)的信中首次使用了e这个名字。1744年,欧拉证明了e是无单反相机哪个牌子好用?人像用的是尼康,风景用的是隹能,至于那个品牌好还真看不出来。00hr对于一个想要系统学习摄影的爱好者,入手一台单反是很有必要的。现在单反主流厂商是佳能和尼康,购买单反的人一般都在者如果微信开始收费使用,每个月5元,你们还会用微信吗?感谢您的阅读!微信月收费5元,可能微信就会被推入到深渊。替代微信的软件可都在摩拳擦掌,微信很早就在悬崖边,随时有掉落的风险。01收费的社交软件在自寻短见很多人都在聊付费平台,什么叫被西方诬陷偷偷支援俄罗斯,大疆被迫暂停俄乌业务我国最低调的科技巨头,居然被西方包装成了俄罗斯背后的军火商。这家公司就是全世界最会造无人机的大疆,不久之前,乌克兰某高官在社交平台发文炮轰大疆只给俄罗斯用云哨系统而不给乌克兰用,这