Kubernetes Namespace — это механизм логического разделения ресурсов внутри одного кластера Kubernetes. Он позволяет группировать объекты (Pods, Services, ConfigMaps, Secrets и другие) в отдельные изолированные области. Таким образом, несколько команд или проектов могут работать в одном кластере, не мешая друг другу.
Основные особенности
- Изоляция ресурсов: объекты в одном namespace по умолчанию не «видят» объекты в другом, если это явно не настроено.
- Квоты и лимиты: администратор может задать ограничения по CPU, памяти или количеству ресурсов для конкретного namespace.
- RBAC (Role-Based Access Control): права пользователей и сервисных аккаунтов можно назначать на уровне namespace.
- Удобство управления: логически группировать ресурсы проще, чем держать всё в «default».
Где это используется
- Разделение окружений: ,
dev
,stage
могут быть оформлены как разные namespaces.prod
- Работа разных команд: каждая команда получает свой namespace с собственными квотами.
- Мультиарендность: SaaS-платформа может выдавать клиентам namespaces, сохраняя изоляцию.
Пример
Создадим новый namespace:
kubectl create namespace finance
Развернём под в нём:
apiVersion: v1 kind: Pod metadata: name: nginx namespace: finance spec: containers: - name: nginx image: nginx:1.25
Теперь этот Pod существует только в пространстве
finance
default
Для клиента
Namespaces дают предсказуемость и контроль:
- можно чётко разделять команды и проекты;
- ограничивать использование ресурсов, чтобы один отдел не «съел» все мощности кластера;
- упростить администрирование и масштабирование.
Тогда вот дополнение — сравнительная таблица, которая чётко показывает, когда стоит ограничиться namespaces, а когда лучше поднять отдельный кластер Kubernetes.
Namespaces vs. Отдельный кластер
Критерий | Namespaces | Отдельный кластер |
---|---|---|
Изоляция данных | Логическая изоляция, данные хранятся в одном etcd | Полная физическая изоляция, свой etcd и control plane |
Ресурсы | Общие для всех namespaces, можно задавать квоты | Выделенные, полностью независимые ресурсы |
Управление доступом | RBAC работает на уровне namespace | Настраивается отдельно для каждого кластера |
Безопасность | Подходит для команд внутри одной компании | Лучше для разных компаний или клиентов (SaaS) |
Стоимость и поддержка | Дешевле: один control plane, меньше накладных расходов | Дороже: каждый кластер требует администрирования |
Гибкость настройки | Ограничена рамками общего кластера | Максимальная: разные версии K8s, плагины, политики |
Применение | Отделы внутри одной организации, разные окружения (dev/stage/prod) | Полная изоляция в финансовом секторе, госуслугах, multi-cloud |
Итого:
- Если у вас одна компания и нужно просто разделить окружения или команды → достаточно namespaces.
- Если речь идёт о строгой изоляции, разных клиентах или требованиях регуляторов → нужен отдельный кластер.