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

Кумулятивний тест Частини 3: Спостережуваність та обслуговування застосунків

Lab Progress 0/5 completed

Обмеження часу: 20 хвилин (імітація тиску іспиту)

Прохідний бал: 80% (8/10 запитань)

Цей тест перевіряє ваше володіння:

  • Пробами застосунків (liveness, readiness, startup)
  • Логуванням контейнерів
  • Технікам налагодження
  • Моніторингом за допомогою kubectl top
  • Застаріванням API

  1. Спробуйте кожне запитання без підглядання у відповіді
  2. Засікайте час — швидкість важлива для CKAD
  3. Використовуйте лише kubectl та kubernetes.io/docs
  4. Перевірте відповіді після завершення всіх запитань

Запитання 1: Проба Liveness

Розділ «Запитання 1: Проба Liveness»

[2 хвилини]

Створіть Під з назвою health-check з nginx, який:

  • Має HTTP liveness пробу на шляху / порт 80
  • Перевіряє кожні 10 секунд
  • Чекає 5 секунд перед першою перевіркою
Відповідь
Terminal window
cat << 'EOF' | k apply -f -
apiVersion: v1
kind: Pod
metadata:
name: health-check
spec:
containers:
- name: nginx
image: nginx
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10
EOF

Запитання 2: Проба Readiness

Розділ «Запитання 2: Проба Readiness»

[2 хвилини]

Під webapp має налаштовану readiness пробу, але ніколи не стає Ready. Як ви будете досліджувати?

Відповідь
Terminal window
# Перевірити статус пода
k get pod webapp
# Describe для перегляду конфігурації проби та подій
k describe pod webapp | grep -A10 Readiness
k 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с
Відповідь
Terminal window
cat << 'EOF' | k apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server
spec:
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: 5
EOF

Запитання 4: Логи контейнерів

Розділ «Запитання 4: Логи контейнерів»

[1 хвилина]

Отримайте останні 50 рядків логів попереднього екземпляра контейнера app у поді crashing-pod.

Відповідь
Terminal window
k logs crashing-pod -c app --previous --tail=50

Запитання 5: Логи кількох контейнерів

Розділ «Запитання 5: Логи кількох контейнерів»

[2 хвилини]

Під multi-app має контейнери з назвами frontend та backend. Увімкніть потокове читання логів з обох контейнерів.

Відповідь
Terminal window
# Усі контейнери одразу
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. Який ваш процес налагодження?

Відповідь
Terminal window
# 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. Перевірити, чи не занадто агресивна проба liveness
k 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 не має ендпоінтів. Як знайти і виправити проблему?

Відповідь
Terminal window
# Перевірити ендпоінти
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 подів з найбільшим використанням пам’яті в усіх просторах імен.

Відповідь
Terminal window
k top pods -A --sort-by=memory | head -6

(head -6, бо перший рядок — заголовок)


Запитання 9: Пошук версій API

Розділ «Запитання 9: Пошук версій API»

[1 хвилина]

Які поточні версії API для цих ресурсів?

  • Ingress
  • CronJob
  • NetworkPolicy
Відповідь
networking.k8s.io/v1
# Швидкий пошук
k explain ingress | grep VERSION
k 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 секунд
Відповідь
Terminal window
cat << 'EOF' | k apply -f -
apiVersion: v1
kind: Pod
metadata:
name: file-check
spec:
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'touch /tmp/healthy && sleep 3600']
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 10
periodSeconds: 5
EOF

Правильних відповідейБалСтатус
10/10100%Чудово — Готові до іспиту
8–9/1080–90%Добре — Потрібен невеликий повтор
6–7/1060–70%Повторіть слабкі місця
<6/10<60%Перегляньте модулі Частини 3

Terminal window
k delete pod health-check file-check 2>/dev/null
k 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 та інше.