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

Частина 2 — Підсумковий тест: Робочі навантаження та планування

Lab Progress 0/9 completed

Мета: Перевірити засвоєння матеріалу з усіх модулів Частини 2 перед переходом до Частини 3.

Цільовий бал: 80% (22/28), щоб впевнено рухатися далі

Обмеження часу: 20 хвилин


Дайте відповідь на всі 28 запитань, не заглядаючи в модулі. Цей тест охоплює 15% змісту іспиту CKA.


Поди — поглиблений розбір (Модуль 2.1)

Розділ «Поди — поглиблений розбір (Модуль 2.1)»
  1. Який найшвидший спосіб створити YAML-шаблон Пода без його застосування?

    Відповідь `kubectl run --image= --dry-run=client -o yaml`
  2. Який тип контейнера виконується до завершення перед запуском основних контейнерів?

    Відповідь Init-контейнери
  3. Який тип проби визначає, чи повинен контейнер отримувати трафік?

    Відповідь Readiness probe (проба готовності)
  4. Як контейнери в одному Поді спілкуються між собою?

    Відповідь Через localhost (вони поділяють один мережевий простір імен)

Деплойменти та ReplicaSets (Модуль 2.2)

Розділ «Деплойменти та ReplicaSets (Модуль 2.2)»
  1. Яка команда створює Деплоймент із 3 репліками?

    Відповідь `kubectl create deployment --image= --replicas=3`
  2. Яка команда оновлює образ Деплойменту?

    Відповідь `kubectl set image deployment/ =`
  3. Яка команда показує історію розгортань для Деплойменту?

    Відповідь `kubectl rollout history deployment/`
  4. Яке значення за замовчуванням має параметр maxUnavailable у стратегії rolling update?

    Відповідь 25%

DaemonSets та StatefulSets (Модуль 2.3)

Розділ «DaemonSets та StatefulSets (Модуль 2.3)»
  1. Який тип робочого навантаження забезпечує один Под на кожному вузлі?

    Відповідь DaemonSet
  2. Який тип Service потрібен для StatefulSets?

    Відповідь Headless Service (clusterIP: None)
  3. У StatefulSet з іменем “web” і 3 репліками — яке ім’я хоста першого Пода?

    Відповідь web-0
  4. Яке поле StatefulSet створює окремі PVC для кожного Пода?

    Відповідь volumeClaimTemplates

Jobs та CronJobs (Модуль 2.4)

Розділ «Jobs та CronJobs (Модуль 2.4)»
  1. Яке поле змушує Job виконувати 5 задач паралельно?

    Відповідь `parallelism: 5`
  2. Який розклад CronJob означає “щодня опівночі”?

    Відповідь `0 0 * * *`
  3. Яке поле Job контролює кількість повторних спроб для невдалого Пода?

    Відповідь `backoffLimit`
  4. Яку restartPolicy потрібно використовувати для Подів у Job?

    Відповідь `Never` або `OnFailure` (не `Always`)

Керування ресурсами (Модуль 2.5)

Розділ «Керування ресурсами (Модуль 2.5)»
  1. У чому різниця між requests та limits для ресурсів?

    Відповідь Requests — гарантований мінімум (використовується для планування). Limits — максимально дозволений обсяг (застосовується під час виконання).
  2. Який клас QoS отримує Под, коли requests дорівнюють limits для всіх контейнерів?

    Відповідь Guaranteed
  3. Який ресурс встановлює квоти на рівні простору імен для CPU/пам’яті?

    Відповідь ResourceQuota
  4. Що відбувається, коли контейнер перевищує свій ліміт пам’яті?

    Відповідь Контейнер отримує OOMKill (примусове завершення)

Планування (Модуль 2.6)

Розділ «Планування (Модуль 2.6)»
  1. Яке поле Пода призначає його на вузол із певною міткою?

    Відповідь `nodeSelector`
  2. Яка команда додає taint до вузла?

    Відповідь `kubectl taint nodes key=value:effect` (наприклад, `kubectl taint nodes node1 dedicated=gpu:NoSchedule`)
  3. Який ефект tolerations дозволяє планування, але віддає перевагу іншим вузлам?

    Відповідь `PreferNoSchedule`
  4. У чому різниця між requiredDuringScheduling та preferredDuringScheduling?

    Відповідь Required — жорстка вимога (Под не буде заплановано, якщо умова не виконана). Preferred — м'яка вимога (планувальник намагається, але розмістить Под в іншому місці за потреби).

ConfigMaps та Secrets (Модуль 2.7)

Розділ «ConfigMaps та Secrets (Модуль 2.7)»
  1. Яка команда створює ConfigMap із літеральних значень?

    Відповідь `kubectl create configmap --from-literal=key=value`
  2. Що відбувається зі змінними середовища, коли ви оновлюєте ConfigMap?

    Відповідь Вони не оновлюються — Под потрібно перезапустити
  3. Як декодувати значення Secret у форматі base64?

    Відповідь `kubectl get secret -o jsonpath='{.data.}' | base64 -d`
  4. Що не так із 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 — Короткий довідник»
Terminal window
# Поди
k run <name> --image=<img> $do # Згенерувати YAML Пода
k run <name> --image=<img> --restart=Never # Створити Pod типу Job
# Деплойменти
k create deploy <name> --image=<img> --replicas=N
k set image deploy/<name> <container>=<new-image>
k rollout status/history/undo deploy/<name>
k scale deploy/<name> --replicas=N
# Jobs
k 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=path
k create secret generic <name> --from-literal=k=v
k get secret <name> -o jsonpath='{.data.<key>}' | base64 -d
# Планування
k taint nodes <node> key=value:NoSchedule
k taint nodes <node> key=value:NoSchedule- # Видалити taint
k 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
# Tolerations
tolerations:
- key: "dedicated"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
# ConfigMap як змінні середовища
envFrom:
- configMapRef:
name: app-config
# Secret як том
volumes:
- name: secret-vol
secret:
secretName: app-secret