首页/云/Kubernetes 速查/kubectl 命名空间查看与切换
kubectl 基础56 条

kubectl 命名空间查看与切换

命名空间是大多数资源的隔离边界;查资源、执行命令、排查问题时先确认所处命名空间,是 K8s 日常操作的基本功。

Kubernetes 速查云更新于 2026-10-13

命名空间是什么

命名空间是集群里的逻辑隔离边界:大多数资源归属于某一个命名空间,名称只要在同一个命名空间内唯一即可。它决定了默认查询范围、权限授予范围与资源配额的生效范围。日常操作里最常踩的坑几乎都来自「忘了自己现在在哪个命名空间」。

什么不属于任何命名空间

集群级资源不归属命名空间,例如节点、存储类、集群角色与准入策略。这意味着在命名空间之间切换上下文时,看到的节点与存储类始终是同一份。理解这条边界,才能在排查时知道哪些对象需要跨命名空间视角去看。

基本信息

适用环境任何 Kubernetes 发行版
常用系统命名空间默认、系统组件、公共、节点租约四个
资源归属大多数资源必须归属某个命名空间
集群级资源节点、存储类、集群角色等不属于任何命名空间
切换默认值通过修改当前上下文的默认命名空间实现
配额与限制资源配额与默认限制按命名空间生效

典型使用场景

  • 环境隔离:开发、测试、生产各用一个命名空间,减少互相影响
  • 团队隔离:按团队划分命名空间,配合权限管理限定操作范围
  • 配额管理:为每个命名空间设定资源配额,防止单业务占满集群
  • 发布隔离:同一个应用的不同版本分别部署到不同命名空间
  • 排查定位:确认对象实际所在的命名空间,避免在错误范围里查找
  • 清理环境:删除命名空间即可连同其中资源一起回收

常用操作

常用操作
kubectl get ns                                   # 列出所有命名空间
kubectl get ns --show-labels                      # 带上标签便于筛选
kubectl create ns staging                         # 新建命名空间
kubectl config set-context --current --namespace=staging   # 切换默认命名空间
kubectl get pods -n kube-system                    # 在指定命名空间内查询
kubectl get events -A --sort-by=.lastTimestamp | tail -20  # 跨命名空间视角

隔离能力边界

维度命名空间能否隔离说明
名称与查询范围能同名对象可存在于不同命名空间
权限能通过角色绑定限定在命名空间内
资源配额能配额与默认限制按命名空间生效
网络默认不能需要网络策略才能限制互通
节点与存储类不能这些是集群级资源,跨命名空间共享
脚本中建议每条命令都显式带上命名空间参数,避免依赖上下文默认值而误操作到其他环境。
删除命名空间会级联删除其中所有资源且不可撤销,执行前先列出里面的对象确认没有需要保留的内容。

易错点

  • 依赖上下文默认命名空间:人在测试环境、命令却打到默认命名空间,或反过来,导致误操作与误判
  • 以为命名空间能隔离网络:默认情况下跨命名空间流量是互通的,需要网络策略才生效
  • 删除命名空间前不确认内容:连带删除其中的存储与配置对象,丢失难以恢复的数据
  • 在命名空间里找集群级资源:节点、存储类不属于任何命名空间,用带命名空间的查询会提示找不到

数据来源与参考

  • Kubernetes 官方文档 · Namespaces
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌