如何创建和管理 Kubernetes 命名空间
发布于2026-08-15 阅读(0)
{"position":0,"title":"简介","layout":"doc-fullscreen","text":"## 简介nn本全面指南探讨了Kubernetes命名空间,为开发人员和DevOps专业人员提供了有效组织和管理集群资源的基本策略。通过了解命名空间的基本原理,你将学习如何创建逻辑资源边界、改善集群组织并增强整体容器基础设施管理。n","need_verify":false,"has_solution":false},{"position":1,"title":"Kubernetes 命名空间基础","layout":"doc-workbench-split","text":"## Kubernetes 命名空间基础nn### 什么是 Kubernetes 命名空间?nnKubernetes 命名空间是一种虚拟集群机制,它为命名和组织集群资源提供了一个作用域。它能够在 Kubernetes 集群内实现逻辑隔离和资源分割,使团队能够有效地管理和划分资源。nn```mermaidngraph TDn A[Kubernetes 集群] --> B[命名空间 1]n A --> C[命名空间 2]n A --> D[命名空间 3]n B --> E[Pod]n B --> F[服务]n C --> G[部署]n C --> H[配置映射]n```nn### 核心命名空间特性nn| 特性 | 描述 |n| ------------ | -------------------------------------- |n| 资源隔离 | 在资源之间提供逻辑隔离 |n| 名称唯一性 | 资源名称在一个命名空间内必须唯一 |n| 默认命名空间 | 包括 default、kube-system、kube-public |nn### 创建命名空间nn要创建一个 Kubernetes 命名空间,请使用以下 kubectl 命令:nn```bashn## 创建一个命名空间nkubectl create namespace developmentnn## 验证命名空间创建nkubectl get namespacesn```nn### 命名空间资源管理nn创建资源时,可以指定命名空间:nn```yamlnapiVersion: v1nkind: Podnmetadata:n name: example-podn namespace: developmentnspec:n containers:n - name: nginxn image: nginx:latestn```nn### 命名空间选择与切换nn```bashn## 设置默认命名空间nkubectl config set-context --current --namespace=developmentnn## 查看当前命名空间nkubectl config view | grep namespacen```n","need_verify":false,"has_solution":false},{"position":2,"title":"命名空间生命周期管理","layout":"doc-workbench-split","text":"## 命名空间生命周期管理nn### 命名空间创建策略nn创建命名空间可以通过多种方法实现:nn```bashn## 声明式方法nkubectl create namespace productionnn## YAML 文件方法nkubectl appl-f namespace.yaml
```yaml
apiVersion: v1
kind: Namespace
metadata:
name: staging
```
### 命名空间资源跟踪
```mermaid
stateDiagram-v2
[*] --> Created
Created --> Active
Active --> Terminating
Terminating --> [*]
```
### 命名空间删除过程
删除命名空间时,其中包含的所有资源也会一并被清理掉:
```bash
## 删除命名空间
kubectl delete namespace staging
## 如果删除过程卡住,可强制删除
kubectl delete namespace staging --grace-period=0 --force
```
### 命名空间删除场景
| 场景 | 操作 | 命令 |
| -------- | -------- | --------------------------------------------------------------- |
| 正常删除 | 优雅终止 | `kubectl delete ns ` |n| 卡住的命名空间 | 强制删除 | `kubectl delete ns --force` |n| 终结器问题 | 手动干预 | `kubectl patch ns 处理卡住的命名空间
当命名空间一直停留在删除状态、迟迟退不出去时,通常要先看它当前的状态,再手动清理终结器:
```bash
## 检查命名空间状态
kubectl get namespace staging -o yaml
## 手动移除终结器
kubectl patch namespace staging -p '{"metadata":{"finalizers":null}}'
```
资源清理策略
要避免资源越堆越多,比较稳妥的做法是落实命名空间生命周期管理:
```bash
## 列出所有命名空间
## 删除未使用的命名空间
```
命名空间高级策略
多租户配置
借助命名空间隔离,可以更好地实现多租户能力:
```yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-quota
namespace: development
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 8Gi
limits.cpu: "8"
limits.memory: 16Gi
```
命名空间资源分配
```mermaid
graph TD
A[集群资源] --> B[命名空间 1]
A --> C[命名空间 2]
B --> D[资源配额]
C --> E[资源限制范围]
```# 访问控制策略nn| 策略 | 实现方式 | 目的 |n| -------------------------- | ------------------------- | ---------------------- |n| RBAC(基于角色的访问控制) | Role-Based Access Control | 限制对命名空间的访问 |n| 网络策略 | 流量控制 | 管理命名空间之间的通信 |n| 资源配额 | 计算限制 | 控制资源消耗 |nn### 网络策略示例nn```yamlnapiVersion: networking.k8s.io/v1nkind: NetworkPolicynmetadata:n name: deny-external-accessn namespace: productionnspec:n podSelector: {}n policyTypes:n - Ingressn - Egressn```nn### 高级命名空间隔离nn创建全面的命名空间隔离:nn```bashn## 创建具有严格隔离的命名空间nkubectl create namespace secure-namespacenn## 应用网络策略nkubectl apply -f network-policy.yamlnn## 设置资源配额nkubectl apply -f resource-quota.yamln```nn### 命名空间标签与选择nn```bashn## 为命名空间添加自定义标签nkubectl label namespace development team=backendnkubectl label namespace production team=frontendnn## 使用标签选择命名空间nkubectl get namespaces -l team=backendn```nn### 动态资源管理nn```yamlnapiVersion: v1nkind: LimitRangenmetadata:n name: default-limitsn namespace: developmentnspec:n limits:n - default:n cpu: 500mn memory: 512Min defaultRequest:n cpu: 250mn memory: 256Min type: Containern```n","need_verify":false,"has_solution":false},{"position":4,"title":"总结","layout":"doc-fullscreen","text":"## 总结nnKubernetes 命名空间提供了一种强大的机制,用于对集群资源进行逻辑分割和隔离。通过掌握命名空间的创建、管理和生命周期策略,团队可以实现更好的资源组织,提高安全性,并简化跨不同环境和项目的复杂容器部署。n","need_verify":false,"has_solution":false}
本文转载于:https://labex.io/zh/tutorials/kubernetes-how-to-create-and-manage-kubernetes-namespaces-392977 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。