Частина 2 — Підсумковий тест: Робочі навантаження та планування
Мета: Перевірити засвоєння матеріалу з усіх модулів Частини 2 перед переходом до Частини 3.
Цільовий бал: 80% (22/28), щоб впевнено рухатися далі
Обмеження часу: 20 хвилин
Інструкції
Розділ «Інструкції»Дайте відповідь на всі 28 запитань, не заглядаючи в модулі. Цей тест охоплює 15% змісту іспиту CKA.
Запитання
Розділ «Запитання»Поди — поглиблений розбір (Модуль 2.1)
Розділ «Поди — поглиблений розбір (Модуль 2.1)»-
Який найшвидший спосіб створити YAML-шаблон Пода без його застосування?
Відповідь
`kubectl run--image= --dry-run=client -o yaml`
-
Який тип контейнера виконується до завершення перед запуском основних контейнерів?
Відповідь
Init-контейнери -
Який тип проби визначає, чи повинен контейнер отримувати трафік?
Відповідь
Readiness probe (проба готовності) -
Як контейнери в одному Поді спілкуються між собою?
Відповідь
Через localhost (вони поділяють один мережевий простір імен)
Деплойменти та ReplicaSets (Модуль 2.2)
Розділ «Деплойменти та ReplicaSets (Модуль 2.2)»-
Яка команда створює Деплоймент із 3 репліками?
Відповідь
`kubectl create deployment--image= --replicas=3`
-
Яка команда оновлює образ Деплойменту?
Відповідь
`kubectl set image deployment/= ` -
Яка команда показує історію розгортань для Деплойменту?
Відповідь
`kubectl rollout history deployment/` -
Яке значення за замовчуванням має параметр maxUnavailable у стратегії rolling update?
Відповідь
25%
DaemonSets та StatefulSets (Модуль 2.3)
Розділ «DaemonSets та StatefulSets (Модуль 2.3)»-
Який тип робочого навантаження забезпечує один Под на кожному вузлі?
Відповідь
DaemonSet -
Який тип Service потрібен для StatefulSets?
Відповідь
Headless Service (clusterIP: None) -
У StatefulSet з іменем “web” і 3 репліками — яке ім’я хоста першого Пода?
Відповідь
web-0 -
Яке поле StatefulSet створює окремі PVC для кожного Пода?
Відповідь
volumeClaimTemplates
Jobs та CronJobs (Модуль 2.4)
Розділ «Jobs та CronJobs (Модуль 2.4)»-
Яке поле змушує Job виконувати 5 задач паралельно?
Відповідь
`parallelism: 5` -
Який розклад CronJob означає “щодня опівночі”?
Відповідь
`0 0 * * *` -
Яке поле Job контролює кількість повторних спроб для невдалого Пода?
Відповідь
`backoffLimit` -
Яку restartPolicy потрібно використовувати для Подів у Job?
Відповідь
`Never` або `OnFailure` (не `Always`)
Керування ресурсами (Модуль 2.5)
Розділ «Керування ресурсами (Модуль 2.5)»-
У чому різниця між requests та limits для ресурсів?
Відповідь
Requests — гарантований мінімум (використовується для планування). Limits — максимально дозволений обсяг (застосовується під час виконання). -
Який клас QoS отримує Под, коли requests дорівнюють limits для всіх контейнерів?
Відповідь
Guaranteed -
Який ресурс встановлює квоти на рівні простору імен для CPU/пам’яті?
Відповідь
ResourceQuota -
Що відбувається, коли контейнер перевищує свій ліміт пам’яті?
Відповідь
Контейнер отримує OOMKill (примусове завершення)
Планування (Модуль 2.6)
Розділ «Планування (Модуль 2.6)»-
Яке поле Пода призначає його на вузол із певною міткою?
Відповідь
`nodeSelector` -
Яка команда додає taint до вузла?
Відповідь
`kubectl taint nodeskey=value:effect` (наприклад, `kubectl taint nodes node1 dedicated=gpu:NoSchedule`) -
Який ефект tolerations дозволяє планування, але віддає перевагу іншим вузлам?
Відповідь
`PreferNoSchedule` -
У чому різниця між requiredDuringScheduling та preferredDuringScheduling?
Відповідь
Required — жорстка вимога (Под не буде заплановано, якщо умова не виконана). Preferred — м'яка вимога (планувальник намагається, але розмістить Под в іншому місці за потреби).
ConfigMaps та Secrets (Модуль 2.7)
Розділ «ConfigMaps та Secrets (Модуль 2.7)»-
Яка команда створює ConfigMap із літеральних значень?
Відповідь
`kubectl create configmap--from-literal=key=value` -
Що відбувається зі змінними середовища, коли ви оновлюєте ConfigMap?
Відповідь
Вони не оновлюються — Под потрібно перезапустити -
Як декодувати значення Secret у форматі base64?
Відповідь
`kubectl get secret-o jsonpath='{.data. }' | base64 -d` -
Що не так із
echo 'password' | base64для створення Secrets?Відповідь
Команда додає символ нового рядка. Використовуйте натомість `echo -n 'password' | base64`.
Оцінювання
Розділ «Оцінювання»Підрахуйте правильні відповіді:
| Бал | Оцінка | Дія |
|---|---|---|
| 25–28 | Відмінно | Готові до Частини 3 |
| 20–24 | Добре | Перегляньте пропущені теми, потім рухайтеся далі |
| 15–19 | Задовільно | Перечитайте відповідні модулі, повторіть тест |
| <15 | Потрібно допрацювати | Виконайте всі вправи модулів ще раз |
Огляд слабких місць
Розділ «Огляд слабких місць»Якщо ви пропустили запитання, перегляньте відповідні розділи:
- Q1–4: Модуль 2.1 — Поди — поглиблений розбір
- Q5–8: Модуль 2.2 — Деплойменти та ReplicaSets
- Q9–12: Модуль 2.3 — DaemonSets та StatefulSets
- Q13–16: Модуль 2.4 — Jobs та CronJobs
- Q17–20: Модуль 2.5 — Керування ресурсами
- Q21–24: Модуль 2.6 — Планування
- Q25–28: Модуль 2.7 — ConfigMaps та Secrets
Практична оцінка
Розділ «Практична оцінка»Перед тим як рухатися далі, переконайтеся, що ви можете зробити це без допомоги:
- Створити багатоконтейнерний Под зі спільним томом менш ніж за 3 хвилини
- Розгорнути та масштабувати Деплоймент, а потім відкотити до попередньої ревізії
- Створити Job, що виконує 5 паралельних задач із 10 загальними завершеннями
- Налаштувати Под із requests, limits для ресурсів та readiness probe
- Запланувати Под на конкретний вузол за допомогою nodeSelector
- Додати taint до вузла та створити Под із відповідним toleration
- Створити ConfigMaps та Secrets, підключити їх як змінні середовища та volume mounts
- Декодувати значення Secret із командного рядка
Швидкісні вправи
Розділ «Швидкісні вправи»Засікайте час на цих типових завданнях іспиту:
| Завдання | Цільовий час |
|---|---|
| Створити Под із певним образом | 15 секунд |
| Створити Деплоймент із 3 репліками | 20 секунд |
| Оновити образ Деплойменту | 15 секунд |
| Створити ConfigMap із літеральних значень | 20 секунд |
| Створити Secret та змонтувати в Под | 90 секунд |
| Додати ліміти ресурсів до наявного Пода | 60 секунд |
| Створити CronJob, що запускається щогодини | 45 секунд |
Якщо ви не вкладаєтеся в ці часові рамки, потренуйтеся у відповідних розділах кожного модуля.
Наступні кроки
Розділ «Наступні кроки»Коли ви набрали 20/28 або більше та виконали практичну оцінку:
Переходьте до Частина 3: Сервіси та мережа
Ця частина охоплює 20% іспиту та навчає, як Поди взаємодіють усередині та за межами кластера.
Частина 2 — Короткий довідник
Розділ «Частина 2 — Короткий довідник»Основні команди
Розділ «Основні команди»# Подиk run <name> --image=<img> $do # Згенерувати YAML Подаk run <name> --image=<img> --restart=Never # Створити Pod типу Job
# Деплойментиk create deploy <name> --image=<img> --replicas=Nk set image deploy/<name> <container>=<new-image>k rollout status/history/undo deploy/<name>k scale deploy/<name> --replicas=N
# Jobsk create job <name> --image=<img> -- <command>k create cronjob <name> --image=<img> --schedule="*/5 * * * *" -- <cmd>
# Конфігураціяk create configmap <name> --from-literal=k=v --from-file=pathk create secret generic <name> --from-literal=k=vk get secret <name> -o jsonpath='{.data.<key>}' | base64 -d
# Плануванняk taint nodes <node> key=value:NoSchedulek taint nodes <node> key=value:NoSchedule- # Видалити taintk label nodes <node> key=valueКлючові YAML-шаблони
Розділ «Ключові YAML-шаблони»# Керування ресурсамиresources: requests: memory: "128Mi" cpu: "250m" limits: memory: "256Mi" cpu: "500m"
# ПробиreadinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10
# Вибір вузлаnodeSelector: disk: ssd
# Tolerationstolerations:- key: "dedicated" operator: "Equal" value: "gpu" effect: "NoSchedule"
# ConfigMap як змінні середовищаenvFrom:- configMapRef: name: app-config
# Secret як томvolumes:- name: secret-vol secret: secretName: app-secret