Ответ
Namespace в Kubernetes — это механизм виртуальной кластеризации внутри физического кластера. В моей работе это основной инструмент для логического разделения и изоляции.
Когда я разворачиваю кластер, я сразу создаю несколько неймспейсов, помимо default, для четкой организации:
kube-system: Для системных компонентов (CoreDNS, kube-proxy, CNI плагины). Пользовательские приложения сюда не попадают.kube-public: Для ресурсов, которые должны быть доступны всем пользователям, включая неаутентифицированных (например, информация о кластере).ingress-nginx/cert-manager: Выделенные неймспейсы для системных аддонов.monitoring: Для стека мониторинга (Prometheus, Grafana).dev,staging,prod: Для изоляции сред разработки, тестирования и производства.
Что изолирует namespace:
- Ресурсы: Поды, сервисы, деплойменты, конфигмапы, секреты — видны только внутри своего неймспейса. Сервис
my-appв неймспейсеdevи сервисmy-appвprod— это два разных объекта. - Сетевые политики (NetworkPolicy): Позволяют контролировать трафик между подами на уровне неймспейсов (например, запретить подам из
devобращаться к базам данных вprod). - Квоты ресурсов (ResourceQuota): Я устанавливаю лимиты на CPU, RAM и количество объектов для каждого неймспейса, чтобы команда
devне могла исчерпать все ресурсы кластера. - Политики безопасности (PodSecurityStandards): Можно применять разные уровни ограничений (например, более строгие для
prod). - Права доступа (RBAC): Роли и RoleBindings привязаны к неймспейсу, что позволяет давать командам доступ только к их среде.
Пример создания и использования для изоляции сред:
# 1. Создание namespace для production
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
environment: prod
tier: critical
---
# 2. ResourceQuota для этого namespace
apiVersion: v1
kind: ResourceQuota
metadata:
name: prod-quota
namespace: production
spec:
hard:
requests.cpu: "20"
requests.memory: 40Gi
limits.cpu: "40"
limits.memory: 80Gi
pods: "100"
Важно помнить, что неймспейсы не обеспечивают сильную изоляцию на уровне ядра — для этого нужны другие механизмы, такие как отдельные ноды или runtime-защита. Это, в первую очередь, организационный и управленческий инструмент.