Модуль 1.8: Простори імен та мітки
Складність:
[ШВИДКО]- Концепції організаціїЧас на виконання: 20-25 хвилин
Передумови: Модулі 1.5-1.7
Що ви зможете робити
Розділ «Що ви зможете робити»Після завершення цього модуля ви зможете:
- Пояснити як простори імен забезпечують логічну ізоляцію та організацію ресурсів
- Визначити коли використовувати простори імен, мітки або анотації для різних цілей
- Порівняти ресурси в межах простору імен та ресурси на рівні кластера
- Оцінити вирази селекторів міток, що використовуються Service, Deployment та NetworkPolicy
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»Простори імен та мітки — це спосіб організації ресурсів у Kubernetes. Мітки дозволяють Services знаходити Поди, Deployments керувати ReplicaSets, а операторам вибирати ресурси. KCNA перевіряє ваше розуміння цих організаційних примітивів.
Простори імен
Розділ «Простори імен»Що таке простір імен?
Розділ «Що таке простір імен?»Простір імен — це спосіб поділу ресурсів кластера між кількома користувачами або командами.
Стандартні простори імен
Розділ «Стандартні простори імен»Кожен кластер має ці вбудовані простори імен:
| Простір імен | Призначення |
|---|---|
| default | Стандартний простір імен для ресурсів без вказаного простору |
| kube-system | Системні компоненти Kubernetes (API server тощо) |
| kube-public | Публічно доступні ресурси (рідко використовується) |
| kube-node-lease | Lease heartbeats вузлів |
Що забезпечують простори імен
Розділ «Що забезпечують простори імен»┌─────────────────────────────────────────────────────────────┐│ ПЕРЕВАГИ ПРОСТОРІВ ІМЕН │├─────────────────────────────────────────────────────────────┤│ ││ 1. ОБЛАСТЬ ІМЕН ││ • Однакове ім'я ресурсу в різних просторах: OK ││ • "backend" у production ≠ "backend" у staging ││ ││ 2. КОНТРОЛЬ ДОСТУПУ ││ • RBAC може бути обмежений простором імен ││ • "Команда A може доступати тільки namespace-a" ││ ││ 3. КВОТИ РЕСУРСІВ ││ • Обмеження CPU/пам'яті на простір імен ││ • Запобігання використання всіх ресурсів однією ││ командою ││ ││ 4. ОРГАНІЗАЦІЯ ││ • Логічне розділення застосунків ││ • Середовища (dev/staging/prod) ││ • Команди (team-a, team-b) ││ │└─────────────────────────────────────────────────────────────┘Що НЕ має простору імен
Розділ «Що НЕ має простору імен»Деякі ресурси мають область кластера (існують у всіх просторах імен):
| З областю кластера | Чому |
|---|---|
| Nodes | Фізичні/віртуальні машини |
| PersistentVolumes | Сховище на рівні кластера |
| Namespaces | Вони містять інші ресурси |
| ClusterRoles | Дозволи на рівні кластера |
| StorageClasses | Конфігурації сховищ |
Мітки
Розділ «Мітки»Що таке мітки?
Розділ «Що таке мітки?»Мітки — це пари ключ-значення, прикріплені до ресурсів для ідентифікації:
┌─────────────────────────────────────────────────────────────┐│ МІТКИ │├─────────────────────────────────────────────────────────────┤│ ││ Мітки — це довільні метадані: ││ ││ metadata: ││ labels: ││ app: frontend ││ environment: production ││ team: platform ││ version: v2.1.0 ││ ││ Мітки можуть бути: ││ • Будь-яка пара ключ-значення ││ • Кілька міток на ресурс ││ • Використовуватися для вибору ││ │└─────────────────────────────────────────────────────────────┘Типи селекторів міток
Розділ «Типи селекторів міток»┌─────────────────────────────────────────────────────────────┐│ ТИПИ СЕЛЕКТОРІВ │├─────────────────────────────────────────────────────────────┤│ ││ НА ОСНОВІ РІВНОСТІ: ││ ───────────────────────────────────────────────────────── ││ selector: ││ matchLabels: ││ app: frontend ││ env: production ││ ││ НА ОСНОВІ МНОЖИН (потужніший): ││ ───────────────────────────────────────────────────────── ││ selector: ││ matchExpressions: ││ - key: app ││ operator: In ││ values: [frontend, backend] ││ - key: env ││ operator: NotIn ││ values: [development] ││ ││ Оператори: In, NotIn, Exists, DoesNotExist ││ │└─────────────────────────────────────────────────────────────┘Анотації
Розділ «Анотації»Мітки проти анотацій
Розділ «Мітки проти анотацій»| Мітки | Анотації | |
|---|---|---|
| Призначення | Для ідентифікації | Для метаданих |
| Селектори | Використовуються у селекторах | НЕ використовуються у селекторах |
| Значення | Короткі | Можуть бути довшими |
| Для кого | Значущі для K8s | Для інструментів/людей |
Використовуйте мітки для: Вибору, організації, групування
Використовуйте анотації для: Інформації про збірку, контактної інформації, підказок конфігурації
Стандартні конвенції міток
Розділ «Стандартні конвенції міток»Kubernetes рекомендує ці стандартні мітки:
| Мітка | Призначення | Приклад |
|---|---|---|
app.kubernetes.io/name | Ім’я застосунку | mysql |
app.kubernetes.io/instance | Ім’я екземпляра | mysql-prod |
app.kubernetes.io/version | Версія | 5.7.21 |
app.kubernetes.io/component | Компонент | database |
app.kubernetes.io/part-of | Застосунок вищого рівня | wordpress |
app.kubernetes.io/managed-by | Інструмент керування | helm |
Чи знали ви?
Розділ «Чи знали ви?»-
Простори імен не забезпечують мережеву ізоляцію - За замовчуванням Поди у різних просторах імен можуть комунікувати. Використовуйте NetworkPolicies для ізоляції.
-
Мітки мають обмеження довжини - Ключі можуть бути до 63 символів (253 з префіксом). Значення до 63 символів.
-
Можна запитувати за мітками -
kubectl get pods -l app=frontend,env=prodпоказує поди, що відповідають обом міткам. -
Імена просторів імен є DNS-піддоменами - Вони повинні бути в нижньому регістрі, алфавітно-цифрові, з дозволеними дефісами.
Типові помилки
Розділ «Типові помилки»| Помилка | Чому це шкодить | Правильне розуміння |
|---|---|---|
| Думати, що простори імен ізолюють мережу | Ризик безпеки | Використовуйте NetworkPolicies для ізоляції |
| Друкарські помилки у ключах міток | Селектори не збігаються | Перевіряйте імена міток |
| Замало міток | Важко організувати/вибрати | Використовуйте послідовну схему маркування |
| Мітки для довгих метаданих | Неправильний інструмент | Використовуйте анотації для описів |
Вікторина
Розділ «Вікторина»-
Які стандартні простори імен у Kubernetes?
Відповідь
`default`, `kube-system`, `kube-public` та `kube-node-lease`. -
Nodes мають область простору імен чи кластера?
Відповідь
Область кластера. Вузли існують у всіх просторах імен, оскільки вони є фізичними/віртуальними машинами, які використовує весь кластер. -
Як Service знаходить свої Поди?
Відповідь
Використовуючи селектори міток. Поле `selector` Service вказує мітки, і будь-який Под з відповідними мітками стає endpoint. -
Яка різниця між мітками та анотаціями?
Відповідь
Мітки призначені для ідентифікації та вибору (використовуються Kubernetes). Анотації для довільних метаданих (використовуються інструментами та людьми). Вибір за анотаціями неможливий. -
Чи можуть два Поди мати однакове ім’я у різних просторах імен?
Відповідь
Так. Простори імен забезпечують область імен. `frontend` у просторі імен `prod` відрізняється від `frontend` у просторі імен `dev`.
Підсумок
Розділ «Підсумок»Простори імен:
- Поділяють ресурси кластера
- Забезпечують область імен
- Дозволяють RBAC та квоти
- Не ізолюють мережу (використовуйте NetworkPolicies)
Мітки:
- Пари ключ-значення для ідентифікації
- Використовуються селекторами (Services, Deployments)
- Забезпечують організацію та вибір
Анотації:
- Пари ключ-значення для метаданих
- НЕ використовуються для вибору
- Для інструментів, людей, довших описів
Частину 1 завершено!
Розділ «Частину 1 завершено!»Ви закінчили Основи Kubernetes (46% іспиту). Тепер ви розумієте:
- Що таке Kubernetes та чому він існує
- Контейнери та як вони працюють
- Компоненти площини управління та вузлів
- Поди, Deployments, ReplicaSets
- Services та виявлення
- Простори імен та мітки
Наступна частина: Частина 2: Оркестрація контейнерів - Як Kubernetes керує навантаженнями у масштабі.