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

Модуль 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-leaseLease 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 для ізоляції
Друкарські помилки у ключах мітокСелектори не збігаютьсяПеревіряйте імена міток
Замало мітокВажко організувати/вибратиВикористовуйте послідовну схему маркування
Мітки для довгих метаданихНеправильний інструментВикористовуйте анотації для описів

  1. Які стандартні простори імен у Kubernetes?

    Відповідь `default`, `kube-system`, `kube-public` та `kube-node-lease`.
  2. Nodes мають область простору імен чи кластера?

    Відповідь Область кластера. Вузли існують у всіх просторах імен, оскільки вони є фізичними/віртуальними машинами, які використовує весь кластер.
  3. Як Service знаходить свої Поди?

    Відповідь Використовуючи селектори міток. Поле `selector` Service вказує мітки, і будь-який Под з відповідними мітками стає endpoint.
  4. Яка різниця між мітками та анотаціями?

    Відповідь Мітки призначені для ідентифікації та вибору (використовуються Kubernetes). Анотації для довільних метаданих (використовуються інструментами та людьми). Вибір за анотаціями неможливий.
  5. Чи можуть два Поди мати однакове ім’я у різних просторах імен?

    Відповідь Так. Простори імен забезпечують область імен. `frontend` у просторі імен `prod` відрізняється від `frontend` у просторі імен `dev`.

Простори імен:

  • Поділяють ресурси кластера
  • Забезпечують область імен
  • Дозволяють RBAC та квоти
  • Не ізолюють мережу (використовуйте NetworkPolicies)

Мітки:

  • Пари ключ-значення для ідентифікації
  • Використовуються селекторами (Services, Deployments)
  • Забезпечують організацію та вибір

Анотації:

  • Пари ключ-значення для метаданих
  • НЕ використовуються для вибору
  • Для інструментів, людей, довших описів

Частину 1 завершено!

Розділ «Частину 1 завершено!»

Ви закінчили Основи Kubernetes (46% іспиту). Тепер ви розумієте:

  • Що таке Kubernetes та чому він існує
  • Контейнери та як вони працюють
  • Компоненти площини управління та вузлів
  • Поди, Deployments, ReplicaSets
  • Services та виявлення
  • Простори імен та мітки

Наступна частина: Частина 2: Оркестрація контейнерів - Як Kubernetes керує навантаженнями у масштабі.