Jobs and CronJobs
Складність:
[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: Ключові відмінності»| Аспект | CKA | CKAD |
|---|---|---|
| Фокус | Адміністрування кластера | Розробка додатків |
| Перспектива | Команда Ops/Платформи | Команда розробки/Додатків |
| Тривалість іспиту | 2 години | 2 години |
| Прохідний бал | 66% | 66% |
| Запитання | ~15-20 завдань | ~15-20 завдань |
| Кластери | Кілька контекстів | Кілька контекстів |
Спільні теми (~60%)
Розділ «Спільні теми (~60%)»Якщо ви склали 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»-
Опануйте імперативні команди для типових завдань:
Terminal window # These should be muscle memoryk run nginx --image=nginxk create deploy web --image=nginx --replicas=3k expose deploy web --port=80 --target-port=8080k create job backup --image=busybox -- /bin/sh -c "echo done"k create cronjob cleanup --image=busybox --schedule="*/5 * * * *" -- /bin/sh -c "echo cleanup" -
Знайте шаблон —dry-run для генерації YAML:
Terminal window k run nginx --image=nginx --dry-run=client -o yaml > pod.yaml -
Запам’ятайте синтаксис проб — ви будете додавати їх постійно:
livenessProbe:httpGet:path: /healthzport: 8080initialDelaySeconds: 5periodSeconds: 10 -
Практикуйте шаблони багатоконтейнерних Подів, доки вони не стануть автоматичними
Чому ви навчитеся в цій програмі
Розділ «Чому ви навчитеся в цій програмі»Частина 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:
k create job myjob --image=busybox -- echo "hello"k create cronjob mycron --schedule="* * * * *" --image=busybox -- date
# Generate multi-container pod YAMLk run multi --image=nginx --dry-run=client -o yaml > multi.yaml# Then edit to add sidecar
# Debuggingk logs pod-name -c container-namek exec -it pod-name -c container-name -- shk debug pod-name --image=busybox --target=container-name
# Quick testingk run test --image=busybox --rm -it --restart=Never -- wget -qO- http://serviceТест
Розділ «Тест»-
Який відсоток іспиту CKAD присвячений домену “Середовище додатку, конфігурація та безпека”?
Відповідь
25% — найбільший домен. Це включає ConfigMaps, Secrets, ServiceAccounts, вимоги до ресурсів та SecurityContexts. -
Назвіть три шаблони багатоконтейнерних Подів, які потрібно знати для CKAD.
Відповідь
Sidecar, Init-контейнер та Ambassador. Sidecar працює разом з основним контейнером, Init запускається перед стартом основних контейнерів, Ambassador обробляє проксіювання. -
У чому ключова різниця в перспективі між CKA та CKAD?
Відповідь
CKA фокусується на адмініструванні кластера (перспектива Ops), тоді як CKAD фокусується на розробці додатків (перспектива розробника). Обидва іспити вимагають практичних навичок Kubernetes, але з різних точок зору. -
Яка тема CKAD НЕ є частиною іспиту CKA?
Відповідь
Обізнаність про застарілі API є специфічною для CKAD. Розуміння того, як перевіряти та обробляти застарілі API, є темою іспиту.
Практичне завдання
Розділ «Практичне завдання»Завдання: Перевірте, чи є у вас основи CKA, необхідні для CKAD.
Критерії успіху: Виконайте ці завдання загалом менш ніж за 5 хвилин:
# 1. Create a deployment with 3 replicask create deploy ckad-test --image=nginx --replicas=3
# 2. Expose it as a ClusterIP servicek expose deploy ckad-test --port=80
# 3. Create a ConfigMapk create configmap app-config --from-literal=env=production
# 4. Create a Secretk create secret generic app-secret --from-literal=password=secret123
# 5. Verify everythingk get deploy,svc,cm,secret | grep ckadЯкщо у вас виникли труднощі з будь-яким із цих завдань, повторіть відповідні модулі CKA перед тим, як продовжити.
Очищення:
k delete deploy ckad-testk delete svc ckad-testk delete cm app-configk delete secret app-secretПрактичні вправи
Розділ «Практичні вправи»Вправа 1: Тест на швидкість імперативних команд (Ціль: 3 хвилини)
Розділ «Вправа 1: Тест на швидкість імперативних команд (Ціль: 3 хвилини)»Створіть наступні ресурси, використовуючи лише імперативні команди (без файлів YAML):
# 1. Pod named 'web' with nginx imagek run web --image=nginx
# 2. Deployment named 'api' with 2 replicas of httpdk create deploy api --image=httpd --replicas=2
# 3. Service exposing the api deployment on port 8080k 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 hourk create cronjob hourly --image=busybox --schedule="0 * * * *" -- date
# Verifyk get pod,deploy,svc,job,cronjob
# Cleanupk delete pod webk delete deploy apik delete svc apik delete job backupk delete cronjob hourlyВправа 2: Генерація YAML (Ціль: 2 хвилини)
Розділ «Вправа 2: Генерація YAML (Ціль: 2 хвилини)»Згенеруйте шаблони YAML за допомогою —dry-run:
# Generate pod YAMLk run nginx --image=nginx --dry-run=client -o yaml > /tmp/pod.yaml
# Generate deployment YAMLk create deploy web --image=nginx --dry-run=client -o yaml > /tmp/deploy.yaml
# Generate service YAMLk create svc clusterip mysvc --tcp=80:80 --dry-run=client -o yaml > /tmp/svc.yaml
# Verify files exist and are validcat /tmp/pod.yaml | head -10cat /tmp/deploy.yaml | head -10Вправа 3: Перемикання контексту (Ціль: 2 хвилини)
Розділ «Вправа 3: Перемикання контексту (Ціль: 2 хвилини)»На іспиті CKAD використовується кілька контекстів кластерів. Попрактикуйте перемикання:
# List available contextsk config get-contexts
# Switch context (use your actual context names)k config use-context kind-kind
# Verify current contextk config current-context
# Quick shortcut: set namespace for contextk config set-context --current --namespace=defaultВправа 4: Запам’ятовування синтаксису проб (Ціль: 3 хвилини)
Розділ «Вправа 4: Запам’ятовування синтаксису проб (Ціль: 3 хвилини)»Напишіть YAML для проб по пам’яті — це вам знадобиться неодноразово:
# Create a pod YAML with all three probe typescat << 'EOF' > /tmp/probed-pod.yamlapiVersion: v1kind: Podmetadata: name: probed-appspec: 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: 10EOF
# Apply and verifyk apply -f /tmp/probed-pod.yamlk describe pod probed-app | grep -A5 "Liveness\|Readiness\|Startup"
# Cleanupk 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.