잡에서하나이상의파드를생성하고지정수의파드가성공적적으로종료될때까지해서파드의의실행을을재시도재시도파드가성공적으로완료,성공성공으로완료된잡을추적한다。지정된수의완료완료도달,작업(즉,잡)이완료완료。잡을삭제하면잡이생성한파드가정리정리。작업을일시중지에이다시재개될때까지활성파드파드파드된다된다。

간단한사례는잡오브젝트를하나해서파드하나안정적으로실행하고하는것것이다。첫번째파드가실패또는삭제된경우(예로는노드하드웨어의실패또는노드재부팅재부팅재부팅

잡을사용하면여러파드를병렬로실행할수도있다。

예시잡실행하기

다음은 잡 설정 예시이다. 예시는 파이(π)의 2000자리까지 계산해서 출력한다. 이를 완료하는 데 약 10초가 소요된다.

apiVersion批/ v1种类工作元数据名称π规范模板规范容器-名称π图片perl命令“perl”“-Mbignum = bpi”“-wle”“打印bpi(2000)“餐馆政策从来没有backoffLimit4

이명령으로예시를실행할있다있다있다。

Kubectl应用-f //www.amasoeur.com/examples/controllers/job.yaml

출력결과는다음과같다。

的工作。批量创建/π

kubectl을사용해서잡상태를확인한다。

/πkubectl描述工作

출력결과는다음과같다。

名称:pi命名空间:default选择器:controller-uid=c9948307-e56d-4b5d-8302-ae2d7b7da67c标签:controller-uid=c9948307-e56d-4b5d-8302-ae2d7b7da67c job-name=pi注释:kubectl.kubernetes。io / last-applied-configuration:{“apiVersion”:“批/ v1”、“类型”:“工作”,“元数据”:{"注释":{},“名字”:“π”、“名称”:“默认”},“规范”:{“backoffLimit”:4,“模板”:……并行性:1完成:1开始时间:星期一,2019年12月02 15:20:11 + 0200完成:星期一,2019年12月02 15:21:16 + 0200时间:65年代豆荚状态:运行/ 1成功/ 0失败Pod模板:标签:controller-uid = c9948307 e56d - 4 b5d - 8302 ae2d7b7da67c作业名=π容器:π:形象:perl端口:< >没有主机端口:<无>命令:perl -Mbignum=bpi -wle print bpi(2000) Environment:  Mounts:  Volumes:  Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 14m job-controller Created pod: pi-5rwd7 . log . log . log . log . log . log . log

kubectl得到豆荚를사용해서잡의완료된파드를본다。

잡에속하는모든파드를기계적으로읽을수있는양식으로나열하려면,다음과같은명령을사용할수있다。

豆荚$(kubectl获取pods  - 选择职务名称π-输出jsonpath“{. items [*] .metadata.name}”回声美元的豆荚

출력결과는다음과같다。

pi-5rwd7

여기서셀렉터는잡의셀렉터와동일하다。--output = jsonpath.옵션은반환된목록에있는각파드의이름으로표현식을지정한다。

파드중하나를표준출력으로본다。

kubectl日志美元的豆荚

출력결과는다음과같다。

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901

잡사양작성하기

다른쿠버네티스의설정과마찬가지로잡apiVersion种类그리고元数据필드가필요하다。잡의이름은유효한DNS서브도메인이름이어야한다。

잡에는.规格섹션도도하다。

파드템플릿

.spec.template.规格의유일한필수필드이다。

.spec.template파드템플릿이다。이것은apiVersion또는种类가없다는없다는것을제외제외파드와정확하게같은스키마를가지고있다。

추가로파드의필수필드외에도잡의파드템플릿은적절한레이블(파드셀렉터를본다)과적절한재시작정책을명시해야해야。

从来没有또는onfailure.와 같은餐馆政策만 허용된다.

파드셀렉터

.spec.selector필드는 선택 사항이다. 대부분의 케이스에서 지정해서는 안된다.자신의 파드 셀렉터를 지정하기섹션을참고한다。

잡에대한병렬실행

잡으로 실행하기에 적합한 작업 유형은 크게 세 가지가 있다.

  1. 비 - 병렬(非平行)잡:
  • 일반적으로, 파드가 실패하지 않은 한, 하나의 파드만 시작된다.
  • 파드가성공적으로종료하자마자즉시잡이완료된다。
  1. 고정적(固定)인 완료 횟수를가진병렬잡:
  • .spec.completions.0에이아닌양수값을지정한다。
  • 잡은전체작업을나타내며,.spec.completions.성공한파드가있을때완료된다。
  • .spec.completionMode =“索引”를 사용할 때, 각 파드는 0에서.spec.completions-1범위내의서로다른인덱스를가져온다。
  1. 작업큐(队列)가있는병렬잡:
  • .spec.completions.를지정하지않고,.spec.parallelism를 기본으로 한다.
  • 파드는각자또는또는외부서비스간에조정을통해각각의을결정해야해야해야을결정해야해야예를들어파드는큐최대최대n개의항목을가져올(获取)수있다。
  • 각파드는모든피어들의작업이완료되었는지여부를독립적으로판단할수있으며,결과적으로전체잡이완료되게한다。
  • 잡의모든파드가성공적으로종료,새로운파드는생성되지。
  • 하나 이상의 파드가 성공적으로 종료되고, 모든 파드가 종료되면 잡은 성공적으로 완료된다.
  • 성공적으로종료된파드가하나라도생긴경우,다른파드들은해당작업을지속하지않아야하며어떠한출력도작성하면안된다。파드들은모두종료되는과정에있어야한다。

비——병렬잡은.spec.completions..spec.parallelism모두를설정하지않은채로둘수있다。이때둘둘다설정하지않은않은경우경우경우경우으로으로설정

고정적인완료횟수잡은.spec.completions.을 필요한 완료 횟수로 설정해야 한다..spec.parallelism을설정할수있고,설정하지않으면1이기본으로설정된다。

작업 큐잡은.spec.completions.를설정하지않은상태로두고,.spec.parallelism을음수가아닌정수로설정해야한다。

다른 유형의 잡을 사용하는 방법에 대한 더 자세한 정보는잡패턴섹션을본다。

병렬처리제어하기

요청된병렬처리(.spec.parallelism)는는가아닌값으로설정할수있다수수만약지정되지않은경우에는1이기본이된다。만약0으로지정되면병렬가증가할때까지사실상일시일시된다。

실제병렬처리(모든인스턴스에서실행되는파드의수)는여러가지이유로요청된병렬처리보다많거나적을수있다。

  • 고정적인완료횟수(固定完成数)잡의경우,병렬로실행중인파드의수는남은완료수를초과하지않는다。.spec.parallelism의 더 큰 값은 사실상 무시된다.
  • 작업 큐잡은파드가성공한이후에새로운파드가시작되지않는다。그러나나머지파드는완료될수있다。
  • 만약잡컨트롤러가반응할시간이없는경우
  • 만약잡컨트롤러가어떤이유(资源quota.의부족,권한부족등)로든파드생성에실패경우,요청한것보다수수파드가있을수수。
  • 잡 컨트롤러는 동일한 잡에서 과도하게 실패한 이전 파드들로 인해 새로운 파드의 생성을 조절할 수 있다.
  • 파드가정상적으로(优雅)종료되면,중지하는데시간이소요된다。

완료모드

功能状态: Kubernetes v1.21(α)
참고:인덱싱된잡을생성하려면,API서버컨트롤러관리자에서IndexedJob 기능 게이트를활성화해야한다。

완료 횟수가고정적인완료횟수즉, 无效的이 아닌.spec.completions.가있는잡은.spec.completionMode에 지정된 완료 모드를 가질 수 있다.

  • NonIndexed(기본값):.spec.completions.가성공적으로완료된파드가있는경우작업이완료완료것으로간주。즉,각각파드완료는서로상동상동(同源)。空值.spec.completions.가있는있는잡은암시적적NonIndexed이다。
  • 索引:잡의파드는batch.www.amasoeur.com/job-completion-index.어노테이션에서사용할수있는0에서.spec.completions-1까지연결된완료인덱스를가져온다。각인덱스에대해성공적으로완료된파드가하나있으면작업이완료된것으로간주된다。이모드를사용하는방법에대한자세한내용은정적작업할당을사용한한병렬처리를위해인덱싱된을참고한다。참고로,드물기는하지만,동일한인덱스에대해둘이상의파드를시작할수있지만,그중하나만완료횟수에포함된다。

파드와 컨테이너 장애 처리하기

파드내컨테이너의프로세스0이가아닌종료코드로종료되었거나컨테이너메모리제한을초과해서죽는등의여러가지이유로실패할수있다。만약이런일이발생하고.spec.template.spec.restartpolicy =“onfailure”라면파드는노드에그대로되지만,컨테이너는는다시실행실행。따라서프로그램은로컬에서재시작될때의이스케케다루거나.spec.template.spec。餐馆政策="Never"로지정해야한다。더자세한정보는파드라이프사이클餐馆政策를본다。

파드가 노드에서 내보내지는 경우(노드 업그레이드, 재부팅, 삭제 등) 또는 파드의 컨테이너가 실패 되고.spec.template.spec。餐馆政策="Never"로 설정됨과 같은 여러 이유로 전체 파드가 실패할 수 있다. 파드가 실패하면 잡 컨트롤러는 새 파드를 시작한다. 이 의미는 애플리케이션이 새 파드에서 재시작될 때 이 케이스를 처리해야 한다는 점이다. 특히, 이전 실행으로 인한 임시파일, 잠금, 불완전한 출력 그리고 이와 유사한 것들을 처리해야 한다.

.规格平行度=1.spec.completions = 1그리고.spec.template.spec。餐馆政策="Never"를지정하더라도같은프로그램을두번시작하는경우가있다는점을참고한다。

.spec.parallelism그리고.spec.completions.를 모두 1.보다 크게 지정한다면 한번에 여러 개의 파드가 실행될 수 있다. 따라서 파드는 동시성에 대해서도 관대(宽容)해야 한다.

파드백오프(退避)실패정책

구성등의논리적오류로해약간의재시도이후에잡을실패하게만들려는경우가있다。이렇게하려면.spec.backoffLimit에잡을실패로간주하기이전에재시도할횟수를설정한다。백오프제한은기본적으로6으로설정되어있다。잡과관련한실패한파드는최대6분안에서기하급수적으로증가하는백——오프지연(10초20초40초…)한도가되어잡컨트롤러에의해재생성된다。잡의파드가삭제되거나해당시간동안잡에대한다른파드가실패없이성공했을때백오프카운트가재설정된다。

참고:만약잡에restartPolicy = " OnFailure "가있는경우잡백오프한계에도달하면잡을실행중인컨테이너가종료된다。이로인해잡실행파일의디버깅이더어려워질수있다。디버깅하거나로깅시스템을사용해서실패한작업의결과를실수로손실되지않도록하려면RESTARTPOLICY =“永远不会”로 설정하는 것을 권장한다.

잡의종료와정리

잡이완료되면파드가더이상생성되지도않지만,삭제되지도않는다。이를유지하면완료된파드의로그를계속보며에러,경고또는다른기타진단출력을확인할수있다。잡오브젝트는완료된후에도상태를볼수있도록남아있다。상태를확인한후이전잡을삭제하는것은사용자의몫이다。kubectl로잡을삭제할수있다(예:kubectl删除作业/pi또는kubectl删除-f ./job.yaml).kubectl을사용해서해서잡을삭제삭제생성된모든파드도파드도삭제삭제삭제

기본적으로파드의실패(restartPolicy=Never)또는컨테이너가오류(RESTARTPOLICY = ONFAILURE.)로종료되지않는한,잡은중단되지않고실행되고이때위위에서설명.spec.backoffLimit까지연기된다。.spec.backoffLimit에도달하면잡은실패로표기되고실행중인모든파드는종료된다。

잡을 종료하는 또 다른 방법은 유효 데드라인을 설정하는 것이다. 잡의.spec.activedeadlines秒필드필드를초단위단위로설정하면하면activeDeadlineSeconds는생성된파드의수에관계없이잡의기간에적용된다。잡이activeDeadlineSeconds에도달하면,실행중인모든파드가종료되고잡의상태는原因:DeadlineExceeded와 함께类型:失败가된다。

잡의.spec.activedeadlines秒.spec.backoffLimit보다우선한다는점을한다한다。따라서하나이상실패실패실패한파드를하는하는하는하는하는하는backoffLimit에도달하지않은경우에도activeDeadlineSeconds에 지정된 시간 제한에 도달하면 추가 파드를 배포하지 않는다.

예시:

apiVersion批/ v1种类工作元数据名称pi-with-timeout规范backoffLimit5activeDeadlineSecondsOne hundred.模板规范容器-名称π图片perl命令“perl”“-Mbignum = bpi”“-wle”“打印bpi(2000)“餐馆政策从来没有

잡의사양과잡의파드템플릿사양에는모두activeDeadlineSeconds필드가있다는점을참고한다。이필드를적절한레벨로설정해야한다。

餐馆政策는잡자체에적용되는것이아니라파드에적용된다는점을유념한다。잡의상태가类型:失败이되면,잡의자동재시작은없다。즉,.spec.activedeadlines秒.spec.backoffLimit로활성화된잡의종료메커니즘은영구적인잡의실패를유발하며이를해결하기위해수동개입이필요하다。

완료된잡을자동으로정리

완료된 잡은 일반적으로 시스템에서 더 이상 필요로 하지 않는다. 시스템 내에 이를 유지한다면 美国石油学会서버에 부담이 된다. 만약크론잡이잡을된관리경우,지정된관리경우정책따라따라크론잡크론잡크론잡크론잡크론잡크론잡정책크론잡크론잡크론잡크론잡수있다。

완료된잡을위한TTL메커니즘

功能状态: Kubernetes v1.21 [beta]

완료된잡(完整的또는失败的)을을자동으로정리하는하는또방법은.spec.ttlSecondsAfterFinished필드를지정해서완료된리소스에대해TTL컨트롤러에서제공하는TTL메커니즘을사용하는것이다。

TTL컨트롤러컨트롤러는잡을잡을정리잡을계단식으로삭제삭제즉,잡과잡과함께파드와와같은오브젝트를삭제삭제잡을삭제하면终结器와같은라이프사이트클이보장되는것을참고한다。

예시:

apiVersion批/ v1种类工作元数据名称pi-with-ttl规范ttlSecondsAfterFinishedOne hundred.模板规范容器-名称π图片perl命令“perl”“-Mbignum = bpi”“-wle”“打印bpi(2000)“餐馆政策从来没有

pi-with-ttl잡은 완료 후One hundred.초이후에자동으로삭제될수있다。

만약 필드를0으로설정하면,잡이완료된직후에자동으로삭제되도록할수있다。만약필드를설정하지않으면,이잡이완료된후에TTL컨트롤러에의해정리되지않는다。

잡패턴

잡오브젝트를사용해서신뢰할수있는파드의병렬실행을지원할수있다。잡오브젝트는과학컴퓨팅(科学计算)에서일반적으로사용되는밀접하게통신하는병렬프로세스를지원하도록설계되지않았다。잡오브젝트는독립적이지만관련된작업항목집합의 병렬 처리를 지원한다. 여기에는 전송할 이메일들, 렌더링할 프레임, 코드 변환이 필요한 파일, NoSQL데이터베이스에서의 키 범위 스캔 등이 있다.

복잡한시스템에는여러개의다른작업항목집합이있을수있다。여기서는사용자와함께관리하려는하나의작업항목집합-배치잡을 고려하고 있다.

병렬계산에는몇몇다른패턴이있으며각각의장단점이있다。트레이드오프는다음과같다。

  • 각작업항목에대한하나의잡오브젝트vs모든작업항목에대한단일잡오브젝트。후자는작업항목수가많은경우더적합하다。전자는사용자와시스템이많은수의잡오브젝트를관리해야하는약간의오버헤드를만든다。
  • 작업항목과동일한개수의파드생성vs각파드에서다수의작업항목을처리。전자는일반적으로기존코드와컨테이너를거의수정할필요가없다。후자는이전글머리표(-)와비슷한이유로많은수의작업항목에적합하다。
  • 여러접근방식이작업큐를사용한다。이를위해서는큐서비스를실행하고,작업큐를사용하도록기존프로그램이나컨테이너를수정해야한다。다른접근방식들은기존에컨테이너화된애플리케이션에보다쉽게적용할수있다。

여기에트레이드오프가요약되어있고,2열에서열4까지가위의트레이드오프에해당한다。패턴이름은예시와더자세한설명을위한링크이다。

패턴 단일잡오브젝트 작업항목보다파드가적은가? 수정되지않은앱을사용하는가?
작업 항목 당 파드가 있는 큐 때때로
가변파드수를가진큐
정적작업할당을사용한인덱싱된잡
잡템플릿확장

.spec.completions.로완료를지정할때,잡컨트롤러에의해생성된각파드는동일한사양을갖는다。이의미는작업의모든파드는동일한명령줄과동일한이미지,동일한볼륨,(거의)동일한환경변수를가진다는점이다。이패턴은파드가다른작업을수행하도록배열하는다른방법이다。

이표는각패턴에필요한.spec.parallelism그리고.spec.completions.설정을보여준다。여기서W는작업항목의수이다。

패턴 .spec.completions. .spec.parallelism
작업 항목 당 파드가 있는 큐 W 任何
가변파드수를가진큐 空值 任何
정적작업할당을사용한인덱싱된잡 W 任何
잡템플릿확장 1 1.이어야 함

고급 사용법

잡일시중지

功能状态: Kubernetes v1.21(α)
참고:잡일시중지는쿠버네티스버전1.21이상에서사용할할수。이기능을사용용API서버컨트롤러관리자에서SuspendJob 기능 게이트를활성화해야한다。

잡이 생성되면, 잡 컨트롤러는 잡의 요구 사항을 충족하기 위해 즉시 파드 생성을 시작하고 잡이 완료될 때까지 계속한다. 그러나, 잡의 실행을 일시적으로 중단하고 나중에 다시 시작할 수도 있다. 잡을 일시 중지하려면, 잡의.spec.suspend필드를true로업데이트업데할수。나중나중,다시다시하려면,false로업데이트트。.spec.suspend로 설정된 잡을 생성하면 일시 중지된 상태로 생성된다.

잡이 일시 중지에서 재개되면, 해당.status.starttime.필드가현재시간으로된다。즉,잡이일시중지및재개되면.spec.activedeadlines秒타이머가중지되고재설정된다。

잡을일시중지하면모든활성파드가삭제된다。잡이일시중지되면,SIGTERM시그널로파드가종료된다. 파드의 정상 종료 기간이 적용되며 사용자의 파드는 이 기간 동안에 이 시그널을 처리해야 한다. 나중에 진행 상황을 저장하거나 변경 사항을 취소하는 작업이 포함될 수 있다. 이 방법으로 종료된 파드는 잡의完成수에포함되지않는다。

일시일시중지된상태상태의정의예시는다음과다음과

kubectl找工作我的工作-o yaml
apiVersion批/ v1种类工作元数据名称myjob规范暂停真正的并行1完成5模板规范...

잡의상태를사용하여잡이일시중지되었는지또는과거에일시중지되었는지확인할수있다。

kubectl获得工作/ myjob -o yaml
apiVersion:批次/v1类型:工作.metadata..规格省略状态:条件:-lastProbeTime:“2021 - 02年- 05 - t13:14:33z”lastTransitionTime:“2021 - 02年- 05 - t13:14:33z”状态:“真正的”类型:暂停的开始时间:“2021-02-05T13:13:48z”

“真正的”상태인“暂停”유형의잡의컨디션은잡이일시중지되었음을의미한다。이lastTransitionTime필드는잡이일시중지된기간을결정하는데사용할수있다。해당컨디션의상태가“False”이면,잡이이전에일시중지되었다가현재실행중이다。이러한컨디션이잡의상태에없으면,잡이중지되지않은것이다。

잡이일시중지및재개될때에도이벤트가생성된다。

/ myjob kubectl描述工作
名称:myjob……事件:Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulCreate 12m Job -controller Created pod: myjob-hlrpl Normal SuccessfulDelete 11m Job -controller Deleted pod: myjob-hlrpl Normal Suspended 11m Job -controller Job Suspended Normal SuccessfulCreate 3s Job -controller Created pod:myjob-jvb44 Normal Resumed 3s Job -controller作业恢复

마지막4개의이벤트,특히“暂停”및“恢复”이벤트벤트.spec.suspend필드를전환한결과이다。이두이벤트사이의시간동안파드가생성되지않았지만,잡이재개되자마자파드생성이다시시작되었음을알수있다。

자신의 파드 셀렉터를 지정하기

일반적으로 잡 오브젝트를 생성할 때.spec.selector를 지정하지 않는다. 시스템의 기본적인 로직은 잡이 생성될 때 이 필드를 추가한다. 이것은 다른 잡과 겹치지 않는 셀렉터 값을 선택한다.

그러나,일부케이스에서는이자동화된설정셀렉터를재정의해야할수도있다。이를위해잡의.spec.selector를설정할수있다。

이것을할때는매우주의해야한다。만약해당잡의파드에고유하지않고연관이없는파드와일치하는레이블셀렉터를지정하면,연관이없는잡의파드가삭제되거나,해당잡이다른파드가완료한것으로수를세거나,하나또는양쪽잡모두파드생성이나실행완료를거부할수도있다。만약고유하지않은셀렉터가선택된경우,다른컨트롤러(예:레플리케이션컨트롤러)와해당파드는예측할수없는방식으로작동할수있다。쿠버네티스는당신이.spec.selector를지정할때발생하는실수를막을수없을것이다。

다음은이기능을사용하려는의예시이다。

가 이미 실행 중이다. 기존 파드가 계속 실행되기를 원하지만, 잡이 생성한 나머지 파드에는 다른 파드 템플릿을 사용하고 잡으로 하여금 새 이름을 부여하기를 원한다. 그러나 관련된 필드들은 업데이트가 불가능하기 때문에 잡을 업데이트할 수 없다. 따라서Kubectl delete jobs/old——cascade=false를사용해서잡를삭제하지만,파드를실행상태로둔다. 삭제하기 전에 어떤 셀렉터를 사용하는지 기록한다.

Kubectl得到了一份老工作

출력결과는다음과같다。

种类工作元数据名称...规范选择器matchlabels.控制器 -  UIDA8F3D00D-C6D2-11E5-9F87-42010AF00002...

그런이후에이름이新的인새잡을생성하고,동일한셀렉터를명시적으로지정한다。기존파드에는controller-uid = a8f3d00d c6d2 - 11 - e5 9 f87 af00002——42010레이블이있기에잡新的에 의해서도 제어된다.

시스템이일반적으로자동생성하는셀렉터를사용하지않도록하기위해새잡에서手动选择器:正确를 지정해야 한다.

种类工作元数据名称新的...规范ManualSelector.真正的选择器matchlabels.控制器 -  UIDA8F3D00D-C6D2-11E5-9F87-42010AF00002...

새잡자체는A8F3D00D-C6D2-11E5-9F87-42010AF00002와다른uid를가지게될것이다。手动选择器:正确를설정하면시스템에게사용자가무엇을하는지알고있음을알리고,이런불일치를허용한다。

대안

베어(裸体)파드

파드가 실행 중인 노드가 재부팅되거나 실패하면 파드가 종료되고 다시 시작되지 않는다. 그러나 잡은 종료된 항목을 대체하기 위해 새 파드를 생성한다. 따라서, 애플리케이션에 단일 파드만 필요한 경우에도 베어 파드 대신 잡을 사용하는 것을 권장한다.

레플리케이션컨트롤러

잡은레플리케이션컨트롤러를보완한다。레플리케이션컨트롤러는종료하지않을파드(예:웹서버)를관리하고,잡은종료될것으로예상되는파드(예:배치작업)를관리한다。

파드라이프사이클에서설명한것처럼,오직onfailure.또는从来没有와 같은餐馆政策를사용하는파드에만적절하다。(참고:餐馆政策가설정되지않은경우에는기본값은总是이다)。

단일잡으로컨트롤러파드시작

또다른패턴은단일잡이파드를생성한후다른파드들을생성해서해당파드들에일종의사용자정의컨트롤러역할을하는것이다。이를통해최대한의유연성을얻을수있지만,시작하기에는다소복잡할수있으며쿠버네티스와의통합성이낮아진다。

이패턴의한예시는파드를시작하는잡이다。파드는스크립트를실행해서스파크(火花)마스터컨트롤러(스파크예시를본다)를시작하고,스파크드라이버를실행한다음,정리한다。

이접근방식의장점은전체프로세스가잡오브젝트의완료를보장하면서도,파드생성과작업할당방법을완전히제어하고유지한다는것이다。

크론잡

的计划Unix을사용해서도구인克朗과 유사하게 지정된 시간/일자에 실행되는 잡을 생성할 수 있다.

최종 수정 2021年6月23日太平洋标准时间下午5:52:更新开发-1.21-ko.5中过时的文件(p3) (c3ed460be)