命名空间 (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