通过Namespace实现环境隔离,即为dev、test、prod等环境创建独立命名空间并显式指定资源归属,辅以RBAC、ResourceQuota、NetworkPolicy强化管控,避开系统级Namespace。
通过 Namespace 隔离不同环境资源,本质是利用 Kubernetes 的逻辑分区能力,把 dev、test、prod 等环境部署在彼此独立的虚拟空间里,同名资源互不干扰,权限和资源消耗也能分别管控。
每个环境对应一个明确命名的 Namespace,比如 dev、test、prod。推荐用 YAML 文件定义,便于版本管理和复用:
kubectl apply -f prod-ns.yaml 创建生产环境命名空间env: prod),方便后续筛选或策略绑定kubectl create ns,不利于审计和 CI/CD 流程集成所有工作负载(Deployment、Service、ConfigMap 等)必须明确归属某个环境 Namespace,否则会落到 default 下,失去隔离意义:
-n prod 参数,例如:kubectl apply -f app.yaml -n prod
metadata.namespace: prod,比命令行更可靠nginx-service.test.svc.cluster.local
仅靠 Namespace 不足以实现完整隔离,需结合其他机制协同生效:
dev 的只读/编辑角色,禁止访问 prod
test 中限制最多 10 个 Pod、2Gi 内存,防测试误跑压垮集群prod 访问数据库服务像 kube-system、kube-public 这些是 Kubernetes 自己用的,用户不应往里部署业务资源:
default 是默认兜底空间,新资源不指定 namespace 就进这里,建议禁用或仅作临时调试用kubectl get ns 定期检查是否有业务资源意外落入系统命名空间