当前位置: 首页 > news >正文

Kubernetes命名空间(Namespace)

Namespace 是 Kubernetes 中用于实现资源隔离和多租户管理的核心机制。它通过将集群资源划分为逻辑上的不同分组,实现了不同团队、项目或环境之间的资源隔离与管理。

1、默认的 Namespace

Kubernetes 集群初始化时会自动创建 4 个默认 Namespace:

  1. default
    • 未指定 Namespace 时的默认选择
    • 通常用于临时测试或单机学习环境
  2. kube-system
    • 用于存放 Kubernetes 系统组件(如 kube-proxy、coredns 等)
    • 不建议在此 Namespace 部署用户应用
  3. kube-public
    • 所有用户(包括未认证用户)均可访问
    • 通常用于存放集群级的公共信息(如集群配置地图)
  4. kube-node-lease
    • 用于存放节点租约(Lease)对象
    • 用于节点心跳检测,提高集群的可用性

2、Namespace 的操作

2.1 查看 Namespace

# 查看所有 Namespace
kubectl get namespaces
kubectl get ns  # 简写形式# 查看 Namespace 详细信息
kubectl describe namespace default# 查看特定 Namespace 中的资源
kubectl get pods -n default  # -n 或 --namespace 指定 Namespace
kubectl get pods --namespace kube-system

2.2 创建 Namespace

命令行方式

kubectl create namespace my-namespace

YAML 配置方式(推荐):

# namespace.yaml
apiVersion: v1
kind: Namespace
metadata:name: my-namespacelabels:environment: productionteam: devops

创建命令:

kubectl apply -f namespace.yaml

2.3 设置默认 Namespace

为避免每次操作都需指定 -n 参数,可设置默认 Namespace:

# 设置默认 Namespace
kubectl config set-context --current --namespace=my-namespace# 查看当前上下文配置
kubectl config view --minify | grep namespace:

2.4 删除 Namespace

kubectl delete namespace my-namespace

注意:删除 Namespace 会同时删除该 Namespace 下的所有资源,请谨慎操作!

3、Namespace 资源隔离特性

3.1 资源名称隔离

不同 Namespace 中可以有同名的资源,它们被视为完全独立的资源:

# 在 default Namespace 创建名为 nginx 的 Pod
kubectl run nginx --image=nginx# 在 my-namespace 创建同名 Pod,不会冲突
kubectl run nginx --image=nginx -n my-namespace

3.2 网络隔离(非默认)

所有 Pod 无论位于哪个节点或哪个命名空间,都可以直接通过 IP 地址相互通信。

同一命名空间内:Pod 可以简单地使用 <service-name>来访问 Service。

例如:在 frontend命名空间的 Pod 访问同一命名空间的 api-service,直接使用 http://api-service:80。

跨命名空间访问:Pod 必须使用 Service 的完全限定域名(FQDN):<service-name>.<namespace-name>.svc.cluster.local

例如:在 frontend命名空间的 Pod 要访问 backend命名空间的 database-service,需要使用 http://database-service.backend.svc.cluster.local:5432。

简单来说:跨命名空间通信的秘诀就是使用 [服务名].[命名空间名].svc.cluster.local这个 DNS 地址

4、Namespace 与多租户管理

Namespace 是实现 Kubernetes 多租户管理的基础,结合其他功能可构建完整的多租户解决方案:

4.1 资源配额(Resource Quota)

为每个 Namespace 设置资源使用上限:

apiVersion: v1
kind: ResourceQuota
metadata:name: my-namespace-quotanamespace: my-namespace
spec:hard:pods: "10"requests.cpu: "4"requests.memory: "8Gi"limits.cpu: "8"limits.memory: "16Gi"

4.2 访问控制(RBAC)

通过 RBAC 为不同 Namespace 配置精细的权限控制:

# 仅允许在 my-namespace 中管理 Pod 的角色
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: my-namespacename: pod-manager
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list", "create", "update", "patch", "delete"]

3. 资源限制范围(Limit Range)

为 Namespace 中的资源设置默认和边界值:

apiVersion: v1
kind: LimitRange
metadata:name: my-namespace-limitsnamespace: my-namespace
spec:limits:- default:cpu: "500m"memory: "512Mi"defaultRequest:cpu: "100m"memory: "256Mi"type: Container

5、Namespace 注意事项

  1. 资源范围限制

    • 并非所有资源都属于 Namespace,如 Node, PersistentVolume, ClusterRole, ClusterRoleBinding, Namespace 本身、StorageClass 等。
    • 可通过 kubectl api-resources --namespaced=true 查看命名空间级资源
  2. 删除影响

    • 删除 Namespace 会级联删除其下所有资源
    • 被删除的 Namespace 会处于 Terminating 状态,直到所有资源都被清理
  3. 默认资源

    • 避免在 default Namespace 部署生产应用
    • 不要修改或删除 kube-system 中的系统组件
  4. 数量限制

    • 单个集群中 Namespace 数量不宜过多(建议不超过 1000)
    • 过多的 Namespace 会增加 etcd 负担和管理复杂度
http://www.zskr.cn/news/1839.html

相关文章:

  • Microsoft 推出 .NET 10 RC 1
  • 高等代数 I
  • kotlin中的netty
  • flutter右滑返回直接返回到native问题
  • 如何用变量与函数实现随机生成数字交互?附完整教程
  • Linux系统简单源码安装NGINX版本1.28.0
  • 【项目实战】基于i.MX8M Plus的人工智能小车(AGV导航、视觉避障、自动跟随、颜色识别、防跌落)有教程代码
  • unity TimeLine SignalTrack
  • 根据端口找到进程id
  • 双因子验证网站(aspsms.com/en/registration/)无法注册——Capcha Error
  • mysql导入数据库,从基础命令到高效技巧
  • 基于“北斗+卫星互联网”的低空飞行服务保障基础设施
  • CVE-2025-30208 Vite开发服务器任意文件读取漏洞
  • Claude Code 从入门到精通:最全配置指南和工具推荐
  • 利用python开发的一款日志自动查找复制小工具
  • stress-ng压测CPU内存
  • 答案
  • datadome OfflineAudioContext
  • sentinel-1.8.0 安装
  • 数据结构与算法-27.树-并查集
  • wpf XAML设计器在加载用户控件的时候,提示null引用等直接执行了用户控件里构造函数代码的问题
  • Linux中怎么调整系统inode数量?
  • 【项目实战】基于WS63的鸿蒙星闪红外遥控车(循迹、超声波避障、远程控制、星闪/红外遥控)有教程代码
  • macbook pro怎么安装windows系统
  • XSS与CSRF的联系与区别
  • 异或
  • macbook pro如何安装windows系统
  • 【ACM出版】第四届公共管理、数字经济与互联网技术国际学术会议(ICPDI 2025)
  • 如何在 Linux 中关闭 Swap(虚拟内存)
  • 基于STM32F411的AM2320温湿度采集程序