K8s 命名空间(Namespace)概念
Kubernetes(K8s)中的命名空间是用于在集群内对资源进行逻辑隔离的机制,通过划分不同的命名空间,可以将集群资源(如 Pod、Service、Deployment 等)分配到不同的虚拟 “工作区”,实现多团队、多项目或多环境的资源隔离与管理。
核心作用
- 资源隔离:不同命名空间的资源名称可以重复,避免命名冲突(同一命名空间内资源名称必须唯一)。
- 权限控制:可通过 RBAC(基于角色的访问控制)为不同命名空间分配独立的权限策略,限制用户或团队对资源的操作范围。
- 资源配额管理:可为每个命名空间设置资源配额(如 CPU、内存上限),防止单个项目过度占用集群资源。
默认命名空间
K8s 集群初始化时会创建 4 个默认命名空间:
default
:未定命名空间的资源默认存放于此。kube-system
:存放 K8s 系统组件(如 kube-proxy、etcd 等)的资源。kube-public
:所有用户可访问的公共资源(通常用于存储集群级公开信息)。kube-node-lease
:用于节点心跳检测的租约资源。
常用操作
- 创建命名空间:
kubectl create namespace <命名空间名称>
- 查看命名空间:
kubectl get namespaces
或kubectl get ns
- 在指定命名空间操作资源:
kubectl get pods -n <命名空间名称>
- 删除命名空间:
kubectl delete namespace <命名空间名称>
(会删除该命名空间下所有资源)
适用场景
- 多团队共享集群时,为每个团队分配独立命名空间。
- 区分开发、测试、生产等不同环境的资源。
- 隔离不同项目的资源,便于管理和审计。
命名空间仅提供逻辑隔离,而非网络隔离或安全隔离(需结合网络策略、RBAC 等实现更严格的隔离)。