kubectl 命名空间操作是什么
命名空间既是资源的组织单位,也是权限与配额的隔离边界。命令本身很简单:创建、切换默认命名空间、查看配额与限制,但真正决定集群是否好管的是规划——多团队共用集群时,先按团队与环境的矩阵划分命名空间,再配合资源配额、默认限制、网络策略与 RBAC 做实际隔离。删除命名空间是级联删除,其中所有资源会被一并清理,几乎无法回退。
基本信息
| 创建与删除 | kubectl create ns dev;kubectl delete ns dev 会清空其中全部资源 |
|---|---|
| 切换默认 | kubectl config set-context --current --namespace=dev |
| 查看方式 | kubectl get ns;kubectl get resourcequota -n dev |
| 隔离手段 | 配合 ResourceQuota、LimitRange、NetworkPolicy 与 RBAC |
| 删除影响 | 级联清理命名空间内资源,包括其中的持久卷声明 |
典型使用场景
- 按团队与环境划分资源边界,避免所有人的资源堆在一个空间里
- 给每个命名空间设置资源配额,防止单个团队耗尽集群容量
- 用网络策略限制跨命名空间的访问,收窄服务之间的可达范围
- 灰度或临时环境用完即删,保持集群整洁、减少资源浪费
- 权限按命名空间授予,把误操作的影响范围限制在边界之内
使用示例
使用示例
kubectl create ns staging
kubectl config set-context --current --namespace=staging # 切换默认命名空间
kubectl get ns --show-labels
kubectl get resourcequota,limitrange -n staging
kubectl get all -n staging # 删除前先盘点命名空间内的资源隔离能力对照
| 能力 | 依赖对象 | 解决的问题 |
|---|---|---|
| 资源配额 | ResourceQuota | 防止单个命名空间耗尽集群资源 |
| 默认限制 | LimitRange | 未声明资源的 Pod 自动获得默认请求与上限 |
| 网络隔离 | NetworkPolicy | 限制跨命名空间的网络访问 |
| 权限隔离 | Role 与 RoleBinding | 团队只能操作自己的命名空间 |
删除命名空间是级联且难以恢复的:执行前先确认其中的持久卷声明、密钥与外部依赖,别把它当作清理环境的快捷方式。
命名空间删除后长期停留在 Terminating,通常是其中某个资源的 finalizer 在阻挡:需要逐个处理这些对象,反复执行删除命令不会有任何进展。