Перейти до вмісту

Jobs and CronJobs

Hands-On Lab Available
K8s Cluster intermediate 30 min
Launch Lab ↗

Opens in Killercoda in a new tab

Складність: [QUICK] - Орієнтація та стратегія

Час на проходження: 20-30 хвилин

Передумови: Завершена програма CKA (рекомендовано) або основи Kubernetes


Що ви зможете робити

Розділ «Що ви зможете робити»

Після завершення цього модуля ви зможете:

  • Пояснити структуру іспиту CKAD, домени та відмінності від CKA
  • Створити персоналізований план навчання на основі ваг доменів і ваших наявних сильних сторін
  • Розгорнути практичне середовище з усіма інструментами, необхідними для підготовки до CKAD
  • Діагностувати типові проблеми екзаменаційного середовища, такі як перемикання контексту та управління часом

Чому цей модуль важливий

Розділ «Чому цей модуль важливий»

Сертифікація CKAD (Certified Kubernetes Application Developer) доводить, що ви вмієте проектувати, створювати, налаштовувати та відкривати доступ до хмарно-нативних додатків для Kubernetes. На відміну від CKA, який фокусується на адмініструванні кластера, CKAD повністю присвячений досвіду розробника — як пакувати, розгортати, зневаджувати та запускати додатки.

Якщо ви пройшли програму CKA, ви вже знаєте близько 60% матеріалу іспиту CKAD. Ця сертифікація бере цю основу та масштабує її на аспекти, з якими стикаються розробники: шаблони багатоконтейнерних Подів, проби (probes), Jobs, зневадження (debugging) та обізнаність про застарілі API.

Аналогія: Шеф-кухар проти Менеджера ресторану

CKA — це як бути менеджером ресторану: ви гарантуєте, що кухня працює (кластер), персонал має графік (вузли), запаси поповнені (сховище), а клієнти можуть до вас дістатися (мережі). CKAD — це як бути шеф-кухарем: ви зосереджуєтесь на створенні страв (додатки), отриманні інгредієнтів (конфігурація), ідеальному розрахунку часу (проби) та обробці спеціальних замовлень (Jobs). Обом потрібно розуміти, як працює кухня, але з різних точок зору.


CKAD проти CKA: Ключові відмінності

Розділ «CKAD проти CKA: Ключові відмінності»
АспектCKACKAD
ФокусАдміністрування кластераРозробка додатків
ПерспективаКоманда Ops/ПлатформиКоманда розробки/Додатків
Тривалість іспиту2 години2 години
Прохідний бал66%66%
Запитання~15-20 завдань~15-20 завдань
КластериКілька контекстівКілька контекстів

Якщо ви склали CKA, ви легко впораєтеся з цими темами:

  • Поди, Деплойменти, ReplicaSets
  • Сервіси (ClusterIP, NodePort, LoadBalancer)
  • ConfigMaps та Secrets
  • PersistentVolumes та PersistentVolumeClaims
  • Основи мереж та NetworkPolicies
  • Основи Helm та Kustomize
  • Основи RBAC

Що нового/акцентовано в CKAD

Розділ «Що нового/акцентовано в CKAD»

CKAD робить додатковий акцент на темах, специфічних для розробників:

ТемаПокриття в CKAПокриття в CKAD
Багатоконтейнерні ПодиЗгадуєтьсяГлибокий фокус
Init-контейнериЗгадуєтьсяВажлива навичка
Проби (liveness/readiness/startup)БазовеДетальне
Jobs та CronJobsПокритоФокус на розробника
Збірка образів контейнерівНе покритоВажливо
Застарілі APIНе покритоТема іспиту
Зневадження додатківЗ погляду адмінаЗ погляду розробника
Стратегії розгортанняПоступові оновленняBlue/green, canary

Домени іспиту CKAD (2025)

Розділ «Домени іспиту CKAD (2025)»

Іспит поділено на п’ять зважених доменів:

┌──────────────────────────────────────────────────────────────────┐
│ Розподіл іспиту CKAD │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Середовище додатку, конфігурація та безпека 25% │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────┐ ┌───────────────────────────┐ │
│ │ Проектування та збірка │ │ Розгортання додатків │ │
│ │ 20% │ │ 20% │ │
│ └────────────────────────────┘ └───────────────────────────┘ │
│ │
│ ┌────────────────────────────┐ ┌───────────────────────────┐ │
│ │ Сервіси та мережі │ │ Спостережливість/Обслуг. │ │
│ │ 20% │ │ 15% │ │
│ └────────────────────────────┘ └───────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘

Домен 1: Проектування та збірка додатків (20%)

Розділ «Домен 1: Проектування та збірка додатків (20%)»
  • Визначення, збірка та зміна образів контейнерів
  • Jobs та CronJobs
  • Шаблони багатоконтейнерних Подів
  • Використання постійних та ефемерних томів (volumes)

Домен 2: Розгортання додатків (20%)

Розділ «Домен 2: Розгортання додатків (20%)»
  • Деплойменти та поступові оновлення/відкати (rolling updates/rollbacks)
  • Використання пакетного менеджера Helm
  • Використання Kustomize
  • Розуміння стратегій розгортання (blue/green, canary)

Домен 3: Спостережливість та обслуговування додатків (15%)

Розділ «Домен 3: Спостережливість та обслуговування додатків (15%)»
  • Розуміння застарілих API (API deprecations)
  • Реалізація проб та перевірок працездатності
  • Використання вбудованих інструментів CLI для моніторингу додатків
  • Використання логів контейнерів
  • Зневадження в Kubernetes

Домен 4: Середовище додатку, конфігурація та безпека (25%)

Розділ «Домен 4: Середовище додатку, конфігурація та безпека (25%)»
  • Виявлення та використання CRD
  • Використання ConfigMaps та Secrets
  • Розуміння ServiceAccounts
  • Розуміння вимог додатку до ресурсів
  • Створення та використання SecurityContexts

Домен 5: Сервіси та мережі (20%)

Розділ «Домен 5: Сервіси та мережі (20%)»
  • Демонстрація розуміння Сервісів та NetworkPolicies
  • Відкриття доступу до додатків за допомогою Сервісів
  • Використання правил Ingress для доступу до додатків

Стратегія трьох проходів (Як і в CKA)

Розділ «Стратегія трьох проходів (Як і в CKA)»

Час — ваш ворог. Застосовується та сама стратегія:

┌─────────────────────────────────────────────────────────────────┐
│ Метод трьох проходів CKAD │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Прохід 1: Швидкі перемоги (40-50 хв) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ • Створення Пода/Деплоймента/Сервісу (імперативно) │ │
│ │ • Додавання міток, анотацій │ │
│ │ • Відкриття доступу до Деплоймента │ │
│ │ • Просте створення ConfigMap/Secret │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Прохід 2: Середні завдання (40-50 хв) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ • Додавання проб до Подів │ │
│ │ • Створення багатоконтейнерних Подів │ │
│ │ • Jobs та CronJobs │ │
│ │ • Мережеві політики │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Прохід 3: Складні завдання (20-30 хв) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ • Зневадження додатків з помилками │ │
│ │ • Складні багатоконтейнерні шаблони │ │
│ │ • Helm-чарти зі значеннями │ │
│ │ • Сценарії пошуку несправностей │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

Поради щодо швидкості спеціально для CKAD

Розділ «Поради щодо швидкості спеціально для CKAD»
  1. Опануйте імперативні команди для типових завдань:

    Terminal window
    # These should be muscle memory
    k run nginx --image=nginx
    k create deploy web --image=nginx --replicas=3
    k expose deploy web --port=80 --target-port=8080
    k create job backup --image=busybox -- /bin/sh -c "echo done"
    k create cronjob cleanup --image=busybox --schedule="*/5 * * * *" -- /bin/sh -c "echo cleanup"
  2. Знайте шаблон —dry-run для генерації YAML:

    Terminal window
    k run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
  3. Запам’ятайте синтаксис проб — ви будете додавати їх постійно:

    livenessProbe:
    httpGet:
    path: /healthz
    port: 8080
    initialDelaySeconds: 5
    periodSeconds: 10
  4. Практикуйте шаблони багатоконтейнерних Подів, доки вони не стануть автоматичними


Чому ви навчитеся в цій програмі

Розділ «Чому ви навчитеся в цій програмі»

Частина 0: Налаштування середовища (Ця частина)

Розділ «Частина 0: Налаштування середовища (Ця частина)»
  • Огляд CKAD та стратегія іспиту
  • Оптимізація робочого процесу розробника

Частина 1: Проектування та збірка додатків (20%)

Розділ «Частина 1: Проектування та збірка додатків (20%)»
  • Образи контейнерів
  • Jobs та CronJobs (з погляду розробника)
  • Шаблони багатоконтейнерних Подів (sidecar, init, ambassador)
  • Томи (volumes) для розробників

Частина 2: Розгортання додатків (20%)

Розділ «Частина 2: Розгортання додатків (20%)»
  • Глибоке занурення в Деплойменти
  • Helm для розробників
  • Kustomize для розробників
  • Стратегії розгортання

Частина 3: Спостережливість та обслуговування додатків (15%)

Розділ «Частина 3: Спостережливість та обслуговування додатків (15%)»
  • Проби (liveness, readiness, startup)
  • Логування контейнерів
  • Зневадження додатків
  • Застарілі API

Частина 4: Середовище додатку, конфігурація та безпека (25%)

Розділ «Частина 4: Середовище додатку, конфігурація та безпека (25%)»
  • ConfigMaps та Secrets (просунуті шаблони)
  • ServiceAccounts для додатків
  • Управління ресурсами
  • SecurityContexts
  • Робота з CRD

Частина 5: Сервіси та мережі (20%)

Розділ «Частина 5: Сервіси та мережі (20%)»
  • Типи Сервісів та шаблони
  • Ingress
  • NetworkPolicies для додатків

Частина 6: Пробні іспити

Розділ «Частина 6: Пробні іспити»
  • Практичні сценарії на час
  • Вправи на швидкість

  • CKAD була першою сертифікацією Kubernetes (запущена у 2017 році), після якої пізніше того ж року з’явилася CKA. Її було розроблено спеціально для розробників, які розгортають додатки в Kubernetes, але не керують кластерами.

  • Відсоток успішного складання CKAD трохи вищий, ніж CKA, оскільки розробники часто знаходять практичний формат більш інтуїтивно зрозумілим — він відображає їхню щоденну роботу зі створення та зневадження додатків.

  • Багатоконтейнерні Поди — це фірмова тема CKAD. Хоча CKA згадує їх, CKAD очікує, що ви реалізуєте шаблони sidecar, init та ambassador по пам’яті. Ви зустрінете щонайменше 2-3 запитання, які вимагають цієї навички.


ПомилкаЧому це шкодитьРішення
Надмірна увага адмініструванню кластераCKAD перевіряє розробку додатків, а не налаштування кластераПерегляньте вагу доменів вище
Ігнорування Init-контейнерівВони з’являються приблизно в 15% запитаньПрактикуйте до автоматизму
Незнання синтаксису пробВам доведеться додавати проби до кількох ПодівЗапам’ятайте структуру YAML
Пропуск Jobs/CronJobsВони мають значну вагуПрактикуйте всі шаблони Job
Використання лише kubectl applyІмперативні команди економлять часВивчіть kubectl create/run

Короткий довідник: Команди CKAD проти CKA

Розділ «Короткий довідник: Команди CKAD проти CKA»

Команди, які ви частіше використовуватимете в CKAD:

Terminal window
k create job myjob --image=busybox -- echo "hello"
k create cronjob mycron --schedule="* * * * *" --image=busybox -- date
# Generate multi-container pod YAML
k run multi --image=nginx --dry-run=client -o yaml > multi.yaml
# Then edit to add sidecar
# Debugging
k logs pod-name -c container-name
k exec -it pod-name -c container-name -- sh
k debug pod-name --image=busybox --target=container-name
# Quick testing
k run test --image=busybox --rm -it --restart=Never -- wget -qO- http://service

  1. Який відсоток іспиту CKAD присвячений домену “Середовище додатку, конфігурація та безпека”?

    Відповідь 25% — найбільший домен. Це включає ConfigMaps, Secrets, ServiceAccounts, вимоги до ресурсів та SecurityContexts.
  2. Назвіть три шаблони багатоконтейнерних Подів, які потрібно знати для CKAD.

    Відповідь Sidecar, Init-контейнер та Ambassador. Sidecar працює разом з основним контейнером, Init запускається перед стартом основних контейнерів, Ambassador обробляє проксіювання.
  3. У чому ключова різниця в перспективі між CKA та CKAD?

    Відповідь CKA фокусується на адмініструванні кластера (перспектива Ops), тоді як CKAD фокусується на розробці додатків (перспектива розробника). Обидва іспити вимагають практичних навичок Kubernetes, але з різних точок зору.
  4. Яка тема CKAD НЕ є частиною іспиту CKA?

    Відповідь Обізнаність про застарілі API є специфічною для CKAD. Розуміння того, як перевіряти та обробляти застарілі API, є темою іспиту.

Практичне завдання

Розділ «Практичне завдання»

Завдання: Перевірте, чи є у вас основи CKA, необхідні для CKAD.

Критерії успіху: Виконайте ці завдання загалом менш ніж за 5 хвилин:

Terminal window
# 1. Create a deployment with 3 replicas
k create deploy ckad-test --image=nginx --replicas=3
# 2. Expose it as a ClusterIP service
k expose deploy ckad-test --port=80
# 3. Create a ConfigMap
k create configmap app-config --from-literal=env=production
# 4. Create a Secret
k create secret generic app-secret --from-literal=password=secret123
# 5. Verify everything
k get deploy,svc,cm,secret | grep ckad

Якщо у вас виникли труднощі з будь-яким із цих завдань, повторіть відповідні модулі CKA перед тим, як продовжити.

Очищення:

Terminal window
k delete deploy ckad-test
k delete svc ckad-test
k delete cm app-config
k delete secret app-secret

Вправа 1: Тест на швидкість імперативних команд (Ціль: 3 хвилини)

Розділ «Вправа 1: Тест на швидкість імперативних команд (Ціль: 3 хвилини)»

Створіть наступні ресурси, використовуючи лише імперативні команди (без файлів YAML):

Terminal window
# 1. Pod named 'web' with nginx image
k run web --image=nginx
# 2. Deployment named 'api' with 2 replicas of httpd
k create deploy api --image=httpd --replicas=2
# 3. Service exposing the api deployment on port 8080
k expose deploy api --port=8080 --target-port=80
# 4. Job named 'backup' that runs busybox and echoes "done"
k create job backup --image=busybox -- echo "done"
# 5. CronJob named 'hourly' running every hour
k create cronjob hourly --image=busybox --schedule="0 * * * *" -- date
# Verify
k get pod,deploy,svc,job,cronjob
# Cleanup
k delete pod web
k delete deploy api
k delete svc api
k delete job backup
k delete cronjob hourly

Вправа 2: Генерація YAML (Ціль: 2 хвилини)

Розділ «Вправа 2: Генерація YAML (Ціль: 2 хвилини)»

Згенеруйте шаблони YAML за допомогою —dry-run:

Terminal window
# Generate pod YAML
k run nginx --image=nginx --dry-run=client -o yaml > /tmp/pod.yaml
# Generate deployment YAML
k create deploy web --image=nginx --dry-run=client -o yaml > /tmp/deploy.yaml
# Generate service YAML
k create svc clusterip mysvc --tcp=80:80 --dry-run=client -o yaml > /tmp/svc.yaml
# Verify files exist and are valid
cat /tmp/pod.yaml | head -10
cat /tmp/deploy.yaml | head -10

Вправа 3: Перемикання контексту (Ціль: 2 хвилини)

Розділ «Вправа 3: Перемикання контексту (Ціль: 2 хвилини)»

На іспиті CKAD використовується кілька контекстів кластерів. Попрактикуйте перемикання:

Terminal window
# List available contexts
k config get-contexts
# Switch context (use your actual context names)
k config use-context kind-kind
# Verify current context
k config current-context
# Quick shortcut: set namespace for context
k config set-context --current --namespace=default

Вправа 4: Запам’ятовування синтаксису проб (Ціль: 3 хвилини)

Розділ «Вправа 4: Запам’ятовування синтаксису проб (Ціль: 3 хвилини)»

Напишіть YAML для проб по пам’яті — це вам знадобиться неодноразово:

Terminal window
# Create a pod YAML with all three probe types
cat << 'EOF' > /tmp/probed-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: probed-app
spec:
containers:
- name: app
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 3
periodSeconds: 5
startupProbe:
httpGet:
path: /
port: 80
failureThreshold: 30
periodSeconds: 10
EOF
# Apply and verify
k apply -f /tmp/probed-pod.yaml
k describe pod probed-app | grep -A5 "Liveness\|Readiness\|Startup"
# Cleanup
k delete pod probed-app

Вправа 5: Розпізнавання багатоконтейнерних шаблонів (Ціль: 2 хвилини)

Розділ «Вправа 5: Розпізнавання багатоконтейнерних шаблонів (Ціль: 2 хвилини)»

Визначте, який шаблон потрібен для кожного сценарію:

Сценарій 1: Завантажити конфігурацію до запуску додатку
Відповідь: Init-контейнер
Сценарій 2: Відправляти логи в Elasticsearch паралельно з основним додатком
Відповідь: Sidecar
Сценарій 3: Зачекати, поки база даних буде готова
Відповідь: Init-контейнер
Сценарій 4: Проксіювати підключення до бази даних через localhost
Відповідь: Ambassador
Сценарій 5: Моніторити та перезавантажувати конфігурацію при змінах
Відповідь: Sidecar

Вправа 6: Згадування ваги доменів (Ціль: 1 хвилина)

Розділ «Вправа 6: Згадування ваги доменів (Ціль: 1 хвилина)»

Не підглядаючи, запишіть п’ять доменів CKAD та їхню вагу:

1. Проектування та збірка додатків - 20%
2. Розгортання додатків - 20%
3. Спостережливість та обслуговування додатків - 15%
4. Середовище додатку, конфігурація та безпека - 25%
5. Сервіси та мережі - 20%

Переконайтеся, що ваші відповіді збігаються з розподілом доменів вище. Це допоможе вам пріоритезувати час на навчання.


Модуль 0.2: Робочий процес розробника — Оптимізуйте свої шаблони kubectl для швидкості на CKAD.