Сукупний тест частини 5: Сервіси та мережа
Обмеження часу: 20 хвилин (імітація тиску іспиту)
Прохідний бал: 80% (8/10 питань)
Цей тест перевіряє ваше володіння:
- Типами Сервісів та виявленням
- Маршрутизацією Інгресу
- Мережевими політиками
Інструкції
Розділ «Інструкції»- Спробуйте кожне питання, не дивлячись на відповіді
- Засікайте час — швидкість важлива для CKAD
- Використовуйте лише
kubectlтаkubernetes.io/docs - Перевіряйте відповіді після завершення всіх питань
Питання
Розділ «Питання»Питання 1: Створити ClusterIP Сервіс
Розділ «Питання 1: Створити ClusterIP Сервіс»[2 хвилини]
Створіть Деплоймент з назвою web-app із 3 реплікамі, використовуючи nginx. Відкрийте його за допомогою ClusterIP Сервісу з назвою web-service на порті 80.
Відповідь
k create deployment web-app --image=nginx --replicas=3k expose deployment web-app --name=web-service --port=80 --target-port=80Питання 2: Створити NodePort Сервіс
Розділ «Питання 2: Створити NodePort Сервіс»[2 хвилини]
Створіть NodePort Сервіс з назвою external-web, що відкриває деплоймент web-app на NodePort 30080.
Відповідь
cat << 'EOF' | k apply -f -apiVersion: v1kind: Servicemetadata: name: external-webspec: type: NodePort selector: app: web-app ports: - port: 80 targetPort: 80 nodePort: 30080EOFАбо видалити наявний сервіс і створити заново:
k expose deployment web-app --name=external-web --type=NodePort --port=80 --target-port=80# Потім патч для конкретного nodePortk patch svc external-web -p '{"spec":{"ports":[{"port":80,"targetPort":80,"nodePort":30080}]}}'Питання 3: DNS Сервісу
Розділ «Питання 3: DNS Сервісу»[1 хвилина]
Як під у просторі імен frontend може звернутися до Сервісу з назвою api у просторі імен backend через DNS?
Відповідь
api.backend# абоapi.backend.svc# або повний FQDNapi.backend.svc.cluster.localПитання 4: Зневадження зʼєднання Сервісу
Розділ «Питання 4: Зневадження зʼєднання Сервісу»[2 хвилини]
Сервіс з назвою my-svc не має точок доступу. Які команди ви виконаєте для діагностики проблеми?
Відповідь
# Перевірити точки доступуk get endpoints my-svc
# Отримати селектор сервісуk describe svc my-svc | grep Selector
# Перевірити мітки подівk get pods --show-labels
# Перевірити, що селектор збігається з мітками подів# Якщо невідповідність — виправити селектор або мітки подівПитання 5: Простий Інгрес
Розділ «Питання 5: Простий Інгрес»[3 хвилини]
Створіть Інгрес з назвою app-ingress, що маршрутизує трафік для хосту myapp.example.com до Сервісу з назвою app-service на порті 80.
Відповідь
cat << 'EOF' | k apply -f -apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: app-ingressspec: rules: - host: myapp.example.com http: paths: - path: / pathType: Prefix backend: service: name: app-service port: number: 80EOFПитання 6: Інгрес на основі шляху
Розділ «Питання 6: Інгрес на основі шляху»[3 хвилини]
Створіть Інгрес з назвою multi-path для хосту shop.example.com, що:
- Маршрутизує
/apiдоapi-svc:8080 - Маршрутизує
/webдоweb-svc:80
Відповідь
cat << 'EOF' | k apply -f -apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: multi-pathspec: rules: - host: shop.example.com http: paths: - path: /api pathType: Prefix backend: service: name: api-svc port: number: 8080 - path: /web pathType: Prefix backend: service: name: web-svc port: number: 80EOFПитання 7: Мережева політика типової заборони
Розділ «Питання 7: Мережева політика типової заборони»[2 хвилини]
Створіть мережеву політику з назвою deny-all, що забороняє весь вхідний трафік до подів у просторі імен secure.
Відповідь
cat << 'EOF' | k apply -f -apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: deny-all namespace: securespec: podSelector: {} policyTypes: - IngressEOFПитання 8: Дозволити конкретні поди
Розділ «Питання 8: Дозволити конкретні поди»[3 хвилини]
Створіть мережеву політику з назвою allow-frontend, що:
- Застосовується до подів з міткою
tier=backend - Дозволяє вхідний трафік лише від подів з міткою
tier=frontend - Лише на порті 8080
Відповідь
cat << 'EOF' | k apply -f -apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: allow-frontendspec: podSelector: matchLabels: tier: backend policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: tier: frontend ports: - protocol: TCP port: 8080EOFПитання 9: Селектор простору імен
Розділ «Питання 9: Селектор простору імен»[2 хвилини]
Створіть мережеву політику, що дозволяє вхідний трафік до подів з міткою app=db лише від подів у просторах імен з міткою env=production.
Відповідь
cat << 'EOF' | k apply -f -apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: db-from-prodspec: podSelector: matchLabels: app: db policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: env: productionEOFПитання 10: Політика вихідного трафіку
Розділ «Питання 10: Політика вихідного трафіку»[3 хвилини]
Створіть мережеву політику, що:
- Застосовується до подів з міткою
role=web - Дозволяє вихідний трафік лише до подів з міткою
role=apiна порті 8080 - Дозволяє вихідний трафік до DNS (kube-dns) для розвʼязання імен
Відповідь
cat << 'EOF' | k apply -f -apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: web-egressspec: podSelector: matchLabels: role: web policyTypes: - Egress egress: - to: - podSelector: matchLabels: role: api ports: - protocol: TCP port: 8080 - to: - namespaceSelector: {} podSelector: matchLabels: k8s-app: kube-dns ports: - protocol: UDP port: 53EOFОцінювання
Розділ «Оцінювання»| Правильних відповідей | Бал | Статус |
|---|---|---|
| 10/10 | 100% | Відмінно — готові до іспиту |
| 8–9/10 | 80–90% | Добре — потрібен незначний огляд |
| 6–7/10 | 60–70% | Перегляньте слабкі місця |
| <6/10 | <60% | Поверніться до модулів частини 5 |
Прибирання
Розділ «Прибирання»k delete deployment web-app 2>/dev/nullk delete svc web-service external-web 2>/dev/nullk delete ingress app-ingress multi-path 2>/dev/nullk delete netpol deny-all allow-frontend db-from-prod web-egress 2>/dev/nullКлючові висновки
Розділ «Ключові висновки»Якщо ви набрали менше 80%, перегляньте ці теми:
- Пропущено П1–2: Перегляньте Модуль 5.1 (Сервіси) — типи сервісів та створення
- Пропущено П3–4: Перегляньте Модуль 5.1 (Сервіси) — DNS та зневадження
- Пропущено П5–6: Перегляньте Модуль 5.2 (Інгрес) — правила маршрутизації
- Пропущено П7–10: Перегляньте Модуль 5.3 (Мережеві політики) — селектори та правила
Навчальну програму CKAD завершено!
Розділ «Навчальну програму CKAD завершено!»Вітаємо із завершенням усіх модулів навчальної програми CKAD:
- Частина 1: Проєктування та створення застосунків (Поди, Джоби, багатоконтейнерні шаблони)
- Частина 2: Розгортання застосунків (Деплойменти, Helm, Kustomize)
- Частина 3: Спостережуваність застосунків (Проби, Логування, Зневадження)
- Частина 4: Середовище застосунків (ConfigMap, Секрети, Безпека)
- Частина 5: Сервіси та мережа (Сервіси, Інгрес, Мережеві політики)
Подальші кроки
Розділ «Подальші кроки»- Практикуйтесь, практикуйтесь, практикуйтесь — швидкість важлива для CKAD
- Використовуйте killer.sh для реалістичної симуляції іспиту
- Перегляньте слабкі місця — зосередьтесь на темах, де ви набрали найменше
- Опануйте імперативні команди — це заощадить час на іспиті
Успіхів на іспиті CKAD!