kubernetes 작업을 다시 실행할 수 있습니까?


35

다음 Kubernetes 작업 구성이 있습니다.

---
apiVersion: batch/v1
kind: Job
metadata:
  name: dbload
  creationTimestamp: 
spec:
  template:
    metadata:
      name: dbload
    spec:
      containers:
      - name: dbload
        image: sdvl3prox001:7001/pbench/tdload
        command: ["/opt/pbench/loadTpcdsData.sh",  "qas0063", "dbc", "dbc", "1"]
      restartPolicy: Never
      imagePullSecrets: 
        - name: pbenchregkey
status: {}

내가 할 때 kubectl create -f dbload-deployment.yml --record작업과 포드를 완료 도커 컨테이너 실행을 만들고 나는이 상태를 얻을 수 있습니다 :

$ kubectl get job dbload
NAME      DESIRED   SUCCESSFUL   AGE
dbload    1         1            1h
$ kubectl get pods -a
NAME           READY     STATUS      RESTARTS   AGE
dbload-0mk0d   0/1       Completed   0          1h

이 작업은 일회성 계약이므로 다시 실행할 수 있어야합니다. kubectl create명령 으로 다시 실행 하려고 하면이 오류가 발생합니다.

$ kubectl create -f dbload-deployment.yml --record
Error from server: error when creating "dbload-deployment.yml": jobs.batch "dbload" already exists

물론 내가 할 수있는 중 kubectl delete job dbload다음 실행 kubectl create하지만 어떻게 든 것을 이미 존재하는 작업을-각성을 다시 할 수 있는지 궁금하네요?

답변:


22

아니요. kubernetes 작업을 다시 실행할 수있는 방법은 없습니다. 먼저 삭제해야합니다.


23

작업을 자체로 교체하여 재실행을 시뮬레이션 할 수 있습니다.

  • kubectl get job "your-job" -o json | kubectl replace --force -f -

자동 생성 된 레이블 또는 선택기로 인해 오류가 발생하면 jq를 사용하여 해당 레이블 또는 선택기를 삭제하거나 편집 할 수 있습니다.

  • kubectl get job "your-job" -o json | jq 'del(.spec.selector)' | jq 'del(.spec.template.metadata.labels)' | kubectl replace --force -f -

1
작업 json의 사본을 파일에 먼저 저장하는 것이 좋습니다. kubectl replace재 작성 오류가 발생하기 전에 작업을 삭제합니다.
Jeremy Huiskamp

json을 먼저 저장 한 다음 다시 만드십시오 !!
심층 다이빙

14

다음을 지정하여 언급 한 오류를 피할 수도 있습니다

metadata: generateName: dbload

단순히 대신 name

이 경우이 yaml 파일로 제출 한 각 작업의 이름은 다음과 같습니다 dbloada1b2c. 그럼 당신은 당신이 이전 작업을 삭제해야할지 여부를 결정할 수 있습니다,하지만 당신은하지 않습니다 그것을 할 수 있습니다.


generateName은 kind = pod 및 NOT job에만 적용된다고 생각합니다.
user518066

2
아니요, ObjectMeta의 표준 부분이며 포드 및 작업 모두에 적용됩니다 : k8s reference . 나는 항상 그것을 사용하고 있습니다. 내가하는 일의 핵심입니다.
vp124

1
이 닷지에 대단히 감사합니다. 단지 문서화를 위해서만 작동합니다kubectl create
Ohmen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.