Кумулятивний тест Частини 3: Спостережуваність та обслуговування застосунків
Обмеження часу: 20 хвилин (імітація тиску іспиту)
Прохідний бал: 80% (8/10 запитань)
Цей тест перевіряє ваше володіння:
- Пробами застосунків (liveness, readiness, startup)
- Логуванням контейнерів
- Технікам налагодження
- Моніторингом за допомогою kubectl top
- Застаріванням API
Інструкції
Розділ «Інструкції»- Спробуйте кожне запитання без підглядання у відповіді
- Засікайте час — швидкість важлива для CKAD
- Використовуйте лише
kubectlтаkubernetes.io/docs - Перевірте відповіді після завершення всіх запитань
Запитання
Розділ «Запитання»Запитання 1: Проба Liveness
Розділ «Запитання 1: Проба Liveness»[2 хвилини]
Створіть Під з назвою health-check з nginx, який:
- Має HTTP liveness пробу на шляху
/порт80 - Перевіряє кожні 10 секунд
- Чекає 5 секунд перед першою перевіркою
Відповідь
cat << 'EOF' | k apply -f -apiVersion: v1kind: Podmetadata: name: health-checkspec: containers: - name: nginx image: nginx livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 10EOFЗапитання 2: Проба Readiness
Розділ «Запитання 2: Проба Readiness»[2 хвилини]
Під webapp має налаштовану readiness пробу, але ніколи не стає Ready. Як ви будете досліджувати?
Відповідь
# Перевірити статус подаk get pod webapp
# Describe для перегляду конфігурації проби та подійk describe pod webapp | grep -A10 Readinessk describe pod webapp | tail -20
# Перевірити ендпоінти (під не повинен бути в ендпоінтах, якщо не готовий)k get endpoints
# Перевірити, чи правильний шлях/порт пробиk exec webapp -- curl -s localhost:8080/readyЗапитання 3: Комбіновані проби
Розділ «Запитання 3: Комбіновані проби»[3 хвилини]
Створіть Deployment з назвою api-server з 2 репліками, який:
- Використовує образ
nginx - Має пробу startup: HTTP GET
/порт 80, поріг невдач 30, період 10с - Має пробу liveness: HTTP GET
/порт 80, період 10с - Має пробу readiness: HTTP GET
/порт 80, період 5с
Відповідь
cat << 'EOF' | k apply -f -apiVersion: apps/v1kind: Deploymentmetadata: name: api-serverspec: replicas: 2 selector: matchLabels: app: api-server template: metadata: labels: app: api-server spec: containers: - name: nginx image: nginx ports: - containerPort: 80 startupProbe: httpGet: path: / port: 80 failureThreshold: 30 periodSeconds: 10 livenessProbe: httpGet: path: / port: 80 periodSeconds: 10 readinessProbe: httpGet: path: / port: 80 periodSeconds: 5EOFЗапитання 4: Логи контейнерів
Розділ «Запитання 4: Логи контейнерів»[1 хвилина]
Отримайте останні 50 рядків логів попереднього екземпляра контейнера app у поді crashing-pod.
Відповідь
k logs crashing-pod -c app --previous --tail=50Запитання 5: Логи кількох контейнерів
Розділ «Запитання 5: Логи кількох контейнерів»[2 хвилини]
Під multi-app має контейнери з назвами frontend та backend. Увімкніть потокове читання логів з обох контейнерів.
Відповідь
# Усі контейнери одразуk logs multi-app --all-containers -f
# Або окремоk logs multi-app -c frontend -f &k logs multi-app -c backend -fЗапитання 6: Налагодження CrashLoopBackOff
Розділ «Запитання 6: Налагодження CrashLoopBackOff»[2 хвилини]
Під знаходиться у стані CrashLoopBackOff. Який ваш процес налагодження?
Відповідь
# 1. Перевірити поточний статусk get pod crashing-pod
# 2. Отримати логи екземпляра, що впавk logs crashing-pod --previous
# 3. Перевірити код виходу та подіїk describe pod crashing-pod | grep -A5 "Last State"k describe pod crashing-pod | tail -15
# 4. Перевірити, чи не занадто агресивна проба livenessk describe pod crashing-pod | grep -A5 Liveness
# 5. За потреби перевірити конфігурацію контейнераk get pod crashing-pod -o yaml | grep -A20 containersЗапитання 7: Налагодження Service
Розділ «Запитання 7: Налагодження Service»[2 хвилини]
Service web-svc не має ендпоінтів. Як знайти і виправити проблему?
Відповідь
# Перевірити ендпоінтиk get endpoints web-svc
# Отримати селектор сервісуk describe svc web-svc | grep Selector
# Отримати мітки подівk get pods --show-labels
# Якщо мітки не збігаються, виправити сервіс або поди# Приклад: Виправити селектор сервісуk patch svc web-svc -p '{"spec":{"selector":{"app":"correct-label"}}}'
# Перевіритиk get endpoints web-svcЗапитання 8: Моніторинг ресурсів
Розділ «Запитання 8: Моніторинг ресурсів»[2 хвилини]
Знайдіть 5 подів з найбільшим використанням пам’яті в усіх просторах імен.
Відповідь
k top pods -A --sort-by=memory | head -6(head -6, бо перший рядок — заголовок)
Запитання 9: Пошук версій API
Розділ «Запитання 9: Пошук версій API»[1 хвилина]
Які поточні версії API для цих ресурсів?
- Ingress
- CronJob
- NetworkPolicy
Відповідь
# Швидкий пошукk explain ingress | grep VERSIONk explain cronjob | grep VERSION# batch/v1
k explain networkpolicy | grep VERSION# networking.k8s.io/v1Запитання 10: Exec проба
Розділ «Запитання 10: Exec проба»[2 хвилини]
Створіть Під з назвою file-check з busybox, який:
- Виконує
sleep 3600 - Має liveness пробу, що перевіряє існування файлу
/tmp/healthy - Проба виконується кожні 5 секунд, початкова затримка 10 секунд
Відповідь
cat << 'EOF' | k apply -f -apiVersion: v1kind: Podmetadata: name: file-checkspec: containers: - name: busybox image: busybox command: ['sh', '-c', 'touch /tmp/healthy && sleep 3600'] livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 10 periodSeconds: 5EOFОцінювання
Розділ «Оцінювання»| Правильних відповідей | Бал | Статус |
|---|---|---|
| 10/10 | 100% | Чудово — Готові до іспиту |
| 8–9/10 | 80–90% | Добре — Потрібен невеликий повтор |
| 6–7/10 | 60–70% | Повторіть слабкі місця |
| <6/10 | <60% | Перегляньте модулі Частини 3 |
Очищення
Розділ «Очищення»k delete pod health-check file-check 2>/dev/nullk delete deploy api-server 2>/dev/nullКлючові висновки
Розділ «Ключові висновки»Якщо ваш бал нижче 80%, повторіть ці теми:
- Пропущено З1–3: Повторіть Модуль 3.1 (Проби) — типи проб та конфігурація
- Пропущено З4–5: Повторіть Модуль 3.2 (Логування) — команди для логів та кілька контейнерів
- Пропущено З6–7: Повторіть Модуль 3.3 (Налагодження) — системне усунення несправностей
- Пропущено З8: Повторіть Модуль 3.4 (Моніторинг) — команди kubectl top
- Пропущено З9: Повторіть Модуль 3.5 (Застарівання API) — поточні версії
- Пропущено З10: Повторіть Модуль 3.1 (Проби) — exec проби
Наступна частина
Розділ «Наступна частина»Частина 4: Середовище, конфігурація та безпека застосунків — ConfigMaps, Secrets, SecurityContexts та інше.