Ответ
По умолчанию Namespaces обеспечивают логическую, а не жёсткую изоляцию. Ресурсы в разных неймспейсах «видят» друг друга при определённых условиях.
Как связаны неймспейсы:
- Сетевая связность: Поды из разных неймспейсов могут общаться друг с другом через внутреннюю сеть кластера, если не ограничено
NetworkPolicy. Сервис в неймспейсеbackendдоступен из неймспейсаfrontendпо его полному доменному имени (FQDN):backend-service.backend.svc.cluster.local. - Управление доступом (RBAC): Можно настроить доступ к ресурсам в другом неймспейсе с помощью
RoleиRoleBinding(илиClusterRoleиClusterRoleBinding).# RoleBinding в неймспейсе 'monitoring', дающий доступ ServiceAccount из 'default' apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods namespace: monitoring # Целевой неймспейс subjects: - kind: ServiceAccount name: prometheus-sa namespace: default # Исходный неймспейс roleRef: kind: Role name: pod-reader apiGroup: rbac.authorization.k8s.io - Изоляция ресурсов: Квоты (
ResourceQuota) и лимиты (LimitRange) действуют в пределах своего неймспейса.
Как разделить: Для настоящей изоляции (например, для мультитенантности) необходимо комбинировать NetworkPolicies, RBAC и, возможно, использовать отдельные кластеры или виртуальные кластеры (vClusters).