命名空间 (Namespace)
命名空间 (Namespace) 是 Kubernetes 中用于组织和隔离资源的一种机制。它允许在物理集群上创建多个虚拟集群,提供了一种将集群资源划分为多个虚拟子组的方式。
命名空间的作用
资源隔离
将集群资源划分给不同的用户、团队或项目使用
环境分离
创建独立的 dev、staging、prod 环境
安全边界
通过 RBAC 实现命名空间级别的访问控制
配置管理
为不同命名空间设置不同的资源配额和策略
命名空间架构图
graph TB
subgraph "K8s 集群"
subgraph "default 命名空间"
D1[Deployment A]
D2[Service A]
end
subgraph "development 命名空间"
DEV1[Deployment DEV]
DEV2[Service DEV]
DEV3[Pod DEV]
end
subgraph "production 命名空间"
PROD1[Deployment PROD]
PROD2[Service PROD]
PROD3[Pod PROD]
end
subgraph "kube-system 命名空间"
KS1[kube-dns]
KS2[kube-proxy]
end
end
常用命名空间
| 命名空间 | 说明 | 用途 |
|---|---|---|
| default | 默认命名空间 | 未指定命名空间的资源将创建在这里 |
| kube-system | 系统命名空间 | 存放 Kubernetes 系统组件 |
| kube-public | 公共命名空间 | 存放公共配置,所有用户可读 |
| kube-node-lease | 节点租约命名空间 | 存放节点心跳信息 |
创建和管理命名空间
# 创建命名空间
apiVersion: v1
kind: Namespace
metadata:
name: development
# 使用 kubectl 创建命名空间
kubectl create namespace development
# 查看所有命名空间
kubectl get namespaces
# 在指定命名空间中创建资源
kubectl create deployment nginx --image=nginx -n development
# 切换默认命名空间
kubectl config set-context --current --namespace=development
命名空间资源配额
# 设置命名空间资源配额
apiVersion: v1
kind: ResourceQuota
metadata:
name: quota-dev
namespace: development
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 8Gi
limits.cpu: "8"
limits.memory: 16Gi