Files
school-dev-k8s/practice/9.oneshot-tasks/1.job/README.md
T
Sergey Bondarev f990be6d7e fix numeration
2021-11-02 14:17:38 +03:00

3.7 KiB

Job

Запускаем простой job

  1. Создаем job
kubectl apply -f ~/school-dev-k8s/practice/9.oneshot-tasks/1.job/job.yaml
  1. Проверяем
kubectl get job

Видим:

NAME    COMPLETIONS   DURATION   AGE
hello   1/1           2s         88s
  1. Смотрим на Pod'ы
kubectl get pod

Видим Pod, созданный Job'ой:

NAME          READY   STATUS      RESTARTS   AGE
hello-6l9tv   0/1     Completed   0          2m6s
  1. Смотрим его логи
kubectl logs hello-6l9tv

Видим что все отработало правильно:

Mon Mar 18 15:06:10 UTC 2019
Hello from the Kubernetes cluster
  1. Удаляем Job
kubectl delete job hello

Проверяем работу параметра backoffLimit

  1. Открываем файл job.yaml и находим командy выполняющуюся в Pod:
args:
  - /bin/sh
  - -c
  - date; echo Hello from the Kubernetes cluster

И ломаем полностью:

args:
  - /bin/sh
  - -c
  - date; echo Hello from the Kubernetes cluster; exit 1
  1. Создаем Job:
kubectl apply -f ~/school-dev-k8s/practice/9.oneshot-tasks/1.job/job.yaml
  1. Проверяем
kubectl get job

Видим:

NAME    COMPLETIONS   DURATION   AGE
hello   0/1           27s        27s
  1. Смотрим на Pod'ы
kubectl get pod

Видим Pod'ы, созданные Job'ой:

NAME          READY   STATUS   RESTARTS   AGE
hello-5nvqf   0/1     Error    0          22m
hello-ks4ks   0/1     Error    0          22m
hello-rl984   0/1     Error    0          22m

Они в статусе Error

  1. Смотрим в описание Job'ы
kubectl describe job hello

Видим, что backoffLimit сработал

  Warning  BackoffLimitExceeded  23m   job-controller  Job has reached the specified backoff limit
  1. Удаляем Job
kubectl delete job hello

Проверяем работу параметра activeDeadlineSeconds

  1. Открываем файл job.yaml и находим командy, выполняющуюся в Pod'е:
args:
  - /bin/sh
  - -c
  - date; echo Hello from the Kubernetes cluster

И делаем ее бесконечной

args:
  - /bin/sh
  - -c
  - while true; do date; echo Hello from the Kubernetes cluster; sleep 1; done
  1. Создаем Job
kubectl apply -f ~/school-dev-k8s/practice/9.oneshot-tasks/1.job/job.yaml
  1. Проверяем
kubectl get job

Видим:

NAME    COMPLETIONS   DURATION   AGE
hello   0/1           27s        27s
  1. Смотрим на Pod'ы
kubectl get pod

Видим Pod'ы, созданный Job'ой

NAME          READY   STATUS   RESTARTS   AGE
hello-bt6g6   1/1     Running   0          5s
  1. Ждем 60 секунд и проверяем Job
kubectl describe job hello

Видим, что activeDeadlineSeconds сработал

  Warning  DeadlineExceeded  2m17s  job-controller  Job was active longer than specified deadline
  1. Удаляем Job
kubectl delete job hello

Есть еще два неописанных в манифесте Job'а параметра

Это .spec.completions и .spec.parallelism . Они отвечают за желаемое количество успешно выполненных Pod'ов в рамках Job'а и за параллельный запуск Pod'ов в рамках Job'а соответственно.