Kubernetes Namespaces 详解:虚拟集群与资源隔离-Namespace01

张开发
2026/4/18 6:14:16 15 分钟阅读

分享文章

Kubernetes Namespaces 详解:虚拟集群与资源隔离-Namespace01
Kubernetes Namespaces 详解虚拟集群与资源隔离 前言在 Kubernetes 中Namespaces命名空间是一种在单个物理集群上创建多个虚拟集群的方式。它解决了多团队、多环境共享集群时的资源隔离和名称冲突问题。本文将带你全面了解何时使用 Namespaces、如何操作、以及重要的注意事项。一、什么是 Namespaces定义Namespaces 是 Kubernetes 集群中的虚拟集群隔离机制。核心作用作用说明名称范围资源名称在同一 Namespace 内唯一不同 Namespace 可重名资源划分通过 Resource Quota 限制 Namespace 的资源使用访问控制未来版本中同 Namespace 对象共享相同的访问控制策略默认 Namespaces名称用途default用户创建资源的默认命名空间kube-systemKubernetes 系统组件所在的命名空间二、何时使用多个 Namespaces✅ 适合使用的场景团队或项目中有大量用户需要资源配额Resource Quota限制需要不同的访问控制策略❌ 不适合使用的场景只有少量用户的集群区分同一软件的不同版本用Labels更合适经验法则能通过 Labels 解决的问题不要用 Namespace 来增加复杂度。三、Namespace 命名规则正则表达式a-z0-9?最大长度63 个字符text合法示例my-namespace、test123、dev-env四、常用操作命令创建 Namespace方式一命令行直接创建kubectl create namespace new-namespace **方式二通过 YAML 文件创建** yaml # my-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: new-namespacekubectl create -f ./my-namespace.yaml查看 Namespaceskubectl get namespaces输出示例textNAME STATUS AGEdefault Active 1dkube-system Active 1d删除 Namespacekubectl delete namespaces new-namespace⚠️ 警告删除 Namespace 会自动删除该命名空间下的所有资源临时指定 Namespace单次请求kubectl --namespacemy-namespace get podskubectl --namespacemy-namespace run nginx --imagenginx永久设置默认 Namespace保存到 context设置当前 context 的默认 namespacekubectl config set-context $(kubectl config current-context) --namespacemy-namespace验证kubectl config view | grep namespace:五、哪些资源在/不在 Namespace 中✅ 属于 Namespace 的资源大多数PodsServicesReplication ControllersPersistentVolumeClaimsPVCDeployments、StatefulSets 等❌ 不属于 Namespace 的资源资源类型 说明Nodes 集群节点全局资源PersistentVolumesPV 存储卷全局资源Namespaces 本身 命名空间不属于任何命名空间 特殊情况EventsEvents 可能有也可能没有 Namespace取决于产生该 Event 的对象所属的 Namespace。六、重要注意事项注意点 说明 删除级联 删除 Namespace 会删除其下所有资源谨慎操作 不可删除 default 和 kube-system 不可删除 PV vs PVC PV 全局PVC 属于 Namespace️ 优先用 Label 区分版本等场景优先用 Labels不要滥用 Namespace七、总结核心概念回顾概念 要点本质 物理集群上的虚拟集群主要用途 多团队隔离、资源配额、访问控制默认值 default用户、kube-system系统命名规则 63 字符小写字母、数字、连字符不可删除 default、kube-system一句话总结Namespace 是 Kubernetes 中的虚拟集群隔离机制用于多团队、多环境共享同一个物理集群但不要用它来解决 Labels 就能搞定的问题。八、速记口诀textNamespace 虚拟集群多队多环不打架命名 63 字符内小写数字加连杠default 和 system千万不可随便删删除连带全清空PV 全局 PVC 归它临时指定 --namespace永久存到 context能用 Label 别用 NS资源配额才找它

更多文章