Ответ
Namespace (пространство имён) в Kubernetes — это виртуальный кластер внутри физического кластера. Это механизм для изоляции групп ресурсов (подов, сервисов, ConfigMaps, Secrets) в рамках одного кластера.
Основные цели использования:
- Логическое разделение: Изоляция окружений (dev, staging, prod), команд или проектов.
- Управление доступом: Привязка политик RBAC (Role-Based Access Control) к конкретному пространству имён.
- Квотирование ресурсов: Ограничение потребления CPU, памяти и количества объектов через
ResourceQuota. - Изоляция сети: Применение
NetworkPolicyдля управления сетевым трафиком между подами в разных неймспейсах.
Пример манифеста для создания Namespace:
apiVersion: v1
kind: Namespace
metadata:
name: production
Важные особенности:
- Системные неймспейсы, такие как
kube-system,kube-public,kube-node-lease, создаются и управляются самим Kubernetes. - Ресурсы уровня кластера (Nodes, PersistentVolumes, ClusterRoles) не принадлежат ни одному неймспейсу и являются глобальными.
- Имена ресурсов (например, Pod или Service) должны быть уникальны только в пределах одного неймспейса.
Работа с неймспейсами через kubectl:
# Создать неймспейс
kubectl create namespace dev
# Показать все ресурсы в конкретном неймспейсе
kubectl get all -n dev
# Установить неймспейс по умолчанию для текущего контекста
kubectl config set-context --current --namespace=dev