Встречается на 26% собеседований по DevOps

Что такое неймспейс

Неймспейс (namespace) в Kubernetes — это механизм для логической изоляции группы ресурсов внутри одного кластера. Он предоставляет область, в которой ресурсы могут существовать, управляться и работать, не взаимодействуя с ресурсами других неймспейсов. Это позволяет разделять кластер между несколькими пользователями, проектами или командами, обеспечивая организационную структуру и контроль над ресурсами.

Как это работает

Неймспейсы создают виртуальные границы внутри кластера. Ресурсы, такие как поды, сервисы, конфигмапы и секреты, могут принадлежать только одному неймспейсу. Имена ресурсов должны быть уникальны в пределах неймспейса, но могут повторяться в разных неймспейсах. Это упрощает управление большими кластерами, где одновременно работает множество приложений.

Основные функции неймспейсов:

  • Организационная изоляция: разделение кластера на логические части для разных команд, проектов или окружений (development, staging, production).
  • Квоты ресурсов: администратор может установить лимиты на CPU, память и другие ресурсы для каждого неймспейса, предотвращая монополизацию ресурсов одной командой.
  • Политики безопасности: для каждого неймспейса можно настроить отдельные правила доступа (RBAC), сетевые политики и лимиты, ограничивая взаимодействие между приложениями.

Стандартные неймспейсы

При установке Kubernetes автоматически создаются несколько неймспейсов:

НеймспейсНазначение
defaultДля ресурсов, не указавших неймспейс явно.
kube-systemДля компонентов самого Kubernetes (например, kube-dns, kube-proxy).
kube-publicОбщедоступные ресурсы, видимые всем пользователям.

Пользовательские неймспейсы обычно создают для разделения сред: development, staging, production — это помогает изолировать тестовые и рабочие нагрузки.

Создание неймспейса

Неймспейс можно создать двумя способами: через команду kubectl или YAML-манифест.

Через kubectl:

bash
kubectl create namespace my-namespace

Через YAML-файл:

yaml
apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace

Применить манифест:

bash
kubectl apply -f my-namespace.yaml

Подводные камни

  • Не все ресурсы принадлежат неймспейсу: например, узлы (nodes) и PersistentVolume (PV) являются кластерными ресурсами и не могут быть изолированы неймспейсом.
  • Сложность сетевых политик: по умолчанию поды из разных неймспейсов могут взаимодействовать друг с другом, если не настроены NetworkPolicy. Для полной изоляции требуется дополнительная конфигурация.
  • Квоты требуют настройки: без явного задания ResourceQuota неймспейс не ограничивает потребление ресурсов.
  • Удаление неймспейса удаляет все его ресурсы: будьте осторожны при удалении, это необратимо.

Когда использовать

Неймспейсы особенно полезны в многопользовательских средах, где несколько команд работают в одном кластере. Они позволяют:

  • Разделять окружения (dev, staging, prod) без создания отдельных кластеров.
  • Ограничивать ресурсы для каждой команды.
  • Применять разные политики безопасности.

Однако для небольших проектов или одиночных приложений неймспейсы могут быть избыточны — достаточно default.

Коротко

  • Неймспейс — логическая изоляция ресурсов в кластере Kubernetes.
  • Позволяет разделять кластер между командами, проектами и окружениями.
  • Создаётся через kubectl create namespace или YAML-манифест.
  • Стандартные неймспейсы: default, kube-system, kube-public.
  • Помните: не все ресурсы принадлежат неймспейсу, а удаление неймспейса удаляет все его содержимое.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы