【Kubernetes从入门到精通】第11篇:Namespace——给你的K8s集群划地盘
上一篇【第10篇】Label和Selector——K8s的“贴标签“艺术下一篇【第12篇】Annotation——K8s的便利贴文化摘要前几篇文章咱们一直在default这个Namespace里折腾你可能都没注意到它的存在——因为K8s悄悄帮你把它填上了。Namespace这东西说白了就是K8s里的文件夹——把一个物理集群切分成多个逻辑区域每个区域里可以有同名的Pod、Service、ConfigMap互不影响。张三在他那Namepace里建了个nginx李四也可以在自己Namepace里建个nginx完全不冲突。但Namespace有个大坑——它只做逻辑隔离不是真正的安全边界。很多新手把Namespace当防火墙用结果发现A团队还是能访问B团队的Pod。本文从Namespace的本质讲起覆盖四个初始Namespace的来龙去脉、多团队共享集群的规划策略、跨Namespace通信的实际操作以及ResourceQuota怎么做真正的资源限制。一、Namespace是个什么东西——“文件夹还是防火墙”先给Namespace下个定义**Namespace是K8s里的一种逻辑分组机制把集群里的资源划分到不同的命名空间里。**同一Namespace内的资源名必须唯一不同Namespace的资源可以重名。【Namespace 文件夹】 集群根目录: / ├── default/ ← K8s 预置你的默认活动空间 │ ├── Pod: nginx │ ├── Pod: redis │ └── Service: nginx-svc ├── kube-system/ ← K8s 自己住的地方别乱动 │ ├── Pod: coredns-xxx │ ├── Pod: etcd-minikube │ └── Pod: kube-apiserver-minikube ├── kube-public/ ← 公共信息所有用户都能读 ├── kube-node-lease/ ← 节点心跳信息 ├── team-frontend/ ← 你的前端团队 │ ├── Pod: nginx ← 可以重名 │ └── Pod: vue-app └── team-backend/ ← 你的后端团队 ├── Pod: nginx ← 跟上面的 nginx 不冲突 └── Pod: go-service要点Namespace是逻辑隔离不是物理隔离。同一个集群里不同Namespace的Pod默认是可以通过IP互相访问的网络是通的。如果你想要真正的隔离——不让A团队访问B团队的Pod——得靠NetworkPolicy来做网络层面的控制。【Namespace提供的隔离 vs 没有提供的隔离】 ✅ Namespace 提供的 ❌ Namespace 不提供的 ┌─────────────────────────┐ ┌─────────────────────────┐ │ • 资源名称隔离 │ │ • 网络隔离 │ │ • 基于RBAC的访问控制 │ │ (Pod之间默认可以互通) │ │ • ResourceQuota 资源限制 │ │ • 物理节点隔离 │ │ • 独立的作用域 │ │ (不同NS的Pod可以在同一 │ │ (kubectl get pods 只 │ │ 台Node上) │ │ 看当前空间) │ │ • 真正的安全边界 │ └─────────────────────────┘ │ (不是多租户安全方案) │ └─────────────────────────┘二、四个初始Namespace——K8s自带的地盘一个新集群创建后你会看到四个自带的Namespace# 查看所有Namespacekubectl get namespaces# NAME STATUS AGE# default Active 7d# kube-system Active 7d# kube-public Active 7d# kube-node-lease Active 7d# 或用缩写kubectl get ns2.1 default——“新手的舒适区”这是你如果不指定Namespace时K8s默认使用的命名空间。你之前建的nginx Pod如果没有加-n参数全都落在了这里。要点我强烈建议你别在default里跑生产服务。default就像Windows桌面上那个新建文件夹——一开始觉得方便等东西多了就是灾难。生产环境建议创建专门的Namespacedefault只放测试和临时东西。2.2 kube-system——“K8s的心脏地带”这是K8s自己组件住的地方——API Server的Pod、etcd的Pod、CoreDNS、kube-proxy全在这。你从kubectl get pods -n kube-system里看到的那些Pod基本都在这儿。# 看看K8s自己的内脏kubectl get pods-nkube-system# NAME READY STATUS RESTARTS AGE# coredns-5dd5756b68-nk7zt 1/1 Running 0 7d# etcd-minikube 1/1 Running 0 7d# kube-apiserver-minikube 1/1 Running 0 7d# kube-controller-manager-minikube 1/1 Running 0 7d# kube-proxy-xyz123 1/1 Running 0 7d# kube-scheduler-minikube 1/1 Running 0 7d# storage-provisioner 1/1 Running 0 7d要点kube-system里的东西千万别乱删它是K8s的内脏器官——你不小心删了个CoreDNS Pod虽然Deployment会重建或者更糟——删了整个Namespace那就准备重装集群吧。我自己作死干过一次教训深刻。2.3 kube-public——“公告栏”这个Namespace里的资源对**所有用户包括未认证用户**都是可读的。通常用来放集群级别的公共信息比如cluster-infoConfigMap。kubectl get cm-nkube-public# NAME DATA AGE# cluster-info 1 7d# 这个ConfigMap里的内容对所有用户可见kubectl get cm cluster-info-nkube-public-oyaml2.4 kube-node-lease——“心跳档案室”K8s 1.14后引入的新Namespace用来存每个Node的Lease对象心跳信号。以前Node心跳是kubelet定期更新Node对象的一个字段效率不高现在改成每个Node一个Lease对象高频更新不影响Node对象的整体状态。Namespace用途可以动吗default默认命名空间不指定-n时的落点可以但不建议放生产服务kube-systemK8s系统组件别碰kube-public公共可读信息可以读一般不动kube-node-leaseNode心跳Lease对象别碰三、Namespace的日常操作——增删改查# 创建Namespacekubectl create namespace team-frontend kubectl create ns team-backend# ns 是 namespace 的缩写# 也可以用YAML创建推荐版本可控# namespace-team-frontend.yamlapiVersion:v1kind:Namespacemetadata:name:team-frontendlabels:team:frontendenvironment:productionkubectl apply-fnamespace-team-frontend.yaml# 查看所有Namespacekubectl get namespaces --show-labels# 切换当前上下文到指定Namespace省去每次敲 -nkubectl config set-context--current--namespaceteam-frontend# 查看当前所在的Namespacekubectl config view--minify|grepnamespace# 在指定Namespace里操作kubectl get pods-nteam-backend kubectl describe pod nginx-nteam-frontend kubectl logs deploy/nginx-nteam-frontend# 在所有Namespace里查找kubectl get pods-A# -A 等于 --all-namespaceskubectl get pods --all-namespaces-lappnginx# 删除Namespace会删除其中的所有资源kubectl delete namespace team-frontend# ⚠️ 上述命令会删除 team-frontend 里的所有 Pod/Service/...# 不可逆操作三思而后行要点删除Namespace是K8s里最危险的命令之一——Namespace一删里面所有的Pod、Service、ConfigMap、Secret、PVC……全部灰飞烟灭。执行前请再三确认kubectl get all -n target-ns看一眼里面到底有什么。四、多团队共享集群——Namespace规划实战假设你有个K8s集群要给三个团队用前端、后端、数据分析。怎么设计Namespace结构4.1 按团队划分最常见【按团队划Namespace】 集群 ├── team-frontend/ ← 前端团队的地盘 │ ├── Pod: vue-app │ ├── Pod: nginx │ └── Service: frontend-svc ├── team-backend/ ← 后端团队的地盘 │ ├── Pod: api-server │ ├── Pod: user-service │ └── Service: backend-svc └── team-data/ ← 数据团队的地盘 ├── Pod: spark-worker ├── Pod: flink-job └── Service:>4.2 按环境划分【按环境划Namespace】 集群 ├── dev/ ← 开发环境 ├── staging/ ← 预发布环境 └── prod/ ← 生产环境4.3 混合划分推荐【推荐团队×环境的混合划分】 集群 ├── frontend-dev/ ├── frontend-staging/ ├── frontend-prod/ ├── backend-dev/ ├── backend-staging/ ├── backend-prod/ ├──>五、ResourceQuota——给Namespace戴上紧箍咒Namespace只管名字隔离不管资源限制——后面这个任务由ResourceQuota出场。没有ResourceQuota某个团队可能一个Namespace就吃光了整个集群的资源。# 给 team-frontend 设置资源配额apiVersion:v1kind:ResourceQuotametadata:name:team-frontend-quotanamespace:team-frontendspec:hard:# 计算资源限制requests.cpu:10# 所有Pod的CPU requests总和 ≤ 10核requests.memory:20Gi# 所有Pod的内存requests总和 ≤ 20GiBlimits.cpu:20# 所有Pod的CPU limits总和 ≤ 20核limits.memory:40Gi# 所有Pod的内存limits总和 ≤ 40GiB# 对象数量限制pods:50# 最多50个Podservices:10# 最多10个Serviceconfigmaps:20# 最多20个ConfigMapsecrets:30# 最多30个Secretpersistentvolumeclaims:5# 最多5个PVC# 存储限制requests.storage:100Gi# 所有PVC请求总存储 ≤ 100GiB# 查看ResourceQuotakubectl describe resourcequota-nteam-frontend# 查看当前使用情况kubectl get resourcequota-nteam-frontend# NAME AGE REQUEST LIMIT# team-frontend-quota 1d requests.cpu: 8/10 limits.cpu: 15/20# requests.memory: 15Gi/20Gi limits.memory: 30Gi/40Gi限制类型说明典型值requests.cpuCPU请求总量上限10-100核requests.memory内存请求总量上限20-200GiBlimits.cpuCPU限制总量上限20-200核limits.memory内存限制总量上限40-400GiBpodsPod总数上限50-500servicesService总数上限10-100configmapsConfigMap总数上限20-200secretsSecret总数上限30-300要点ResourceQuota要配合每个Pod的resources.requests使用。如果Pod没有声明requestsResourceQuota就会拒绝创建它。这也是逼着你养成设置资源requests的好习惯。六、跨Namespace通信——“隔壁老王怎么找你”不同Namespace的Pod默认是可以互通的网络上没墙但Service的DNS域名是带Namespace的。K8s内部的DNS格式【K8s DNS 解析规则】 service-name.namespace.svc.cluster-domain 完整FQDN nginx-service.team-backend.svc.cluster.local 同Namespace 直接写 nginx-service 就行 跨Namespace 得写全nginx-service.team-backend 跨Namespace简写nginx-service.team-backend.svc cluster-domain 通常是 cluster.local安装时配置的# 在 team-frontend 空间的 Pod 里访问 team-backend 空间的 Service# 方法1完整FQDNcurlhttp://api-service.team-backend.svc.cluster.local:8080# 方法2DNS简写推荐curlhttp://api-service.team-backend.svc:8080# 方法3用环境变量注入不推荐太局限# K8s会给每个Pod注入同Namespace的Service环境变量# 但跨Namespace的Service不会注入【跨Namespace通信示意图】 Namespace: team-frontend Namespace: team-backend ┌────────────────────────┐ ┌────────────────────────┐ │ │ │ │ │ Pod: vue-app │ │ Service: api-service │ │ │ │ ClusterIP: 10.96.2.5 │ │ 需要访问后端API │ │ │ │ │ │ │ │ ┌─────┴─────┐ │ │ │ curl │ │ ▼ ▼ │ │ │ api-service. │ │ Pod:api-1 Pod:api-2 │ │ │ team-backend │ │ 10.244.2.3 10.244.3.7│ │ │ .svc:8080 │ │ │ │ ▼ │ │ │ │ ┌─────────────────┐ │ └────────────────────────┘ │ │ DNS: CoreDNS │ │ │ │ 解析出10.96.2.5 │ │ │ └────────┬────────┘ │ │ │ │ │ ▼ │ │ 请求发往 10.96.2.5:8080│ ──── kube-proxy 转发 ────► 10.244.2.3:8080 │ │ └────────────────────────┘要点如果你不想让A Namespace的Pod能访问B Namespace的Service得配NetworkPolicy——这才是真正的网络隔离。Namespace自身不挡流量别把它当防火墙用。本篇小结Namespace看着简单但用好了是利器用错了是坑逻辑隔离不是安全隔离——Namespace就像文件夹不同文件夹里的文件可以同名但文件夹本身不防删除和访问四个初始Namespacedefault你的大本营但别放生产、kube-system系统内脏别乱动、kube-public公告栏、kube-node-lease节点心跳档案规划的三种方式按团队、按环境、团队×环境混合——推荐第三种命名规范用team-environmentResourceQuota做真正的资源限制——配额要配合Pod的resources字段才有意义跨Namespace通信DNS用service.namespace.svc要网络隔离用NetworkPolicy下一篇咱们聊Annotation——如果说Label是分类标签Annotation就是便利贴专放那些不适合用来过滤和选择的元数据。上一篇【第10篇】Label和Selector——K8s的“贴标签“艺术下一篇【第12篇】Annotation——K8s的便利贴文化

相关新闻

软件开发生命周期(SDLC)全流程实战指南:从需求到运维

软件开发生命周期(SDLC)全流程实战指南:从需求到运维

1. 从“写代码”到“造产品”:为什么你需要理解SDLC? 刚入行那会儿,我觉得软件开发就是“写代码”。给我一个需求,我吭哧吭哧写出来,能跑通,任务就完成了。直到我第一次负责一个从零到一的小项目&#xff0…

2026/8/3 13:50:42阅读更多 →
SteamAutoCrack:3分钟轻松绕过Steam DRM实现游戏独立运行

SteamAutoCrack:3分钟轻松绕过Steam DRM实现游戏独立运行

SteamAutoCrack:3分钟轻松绕过Steam DRM实现游戏独立运行 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 对于许多拥有合法Steam游戏副本的玩家来说,平台依赖性…

2026/8/3 13:50:42阅读更多 →
Mac Mouse Fix侧键失灵?3步诊断+4层修复让你的鼠标重获新生

Mac Mouse Fix侧键失灵?3步诊断+4层修复让你的鼠标重获新生

Mac Mouse Fix侧键失灵?3步诊断4层修复让你的鼠标重获新生 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否刚更新了macOS&…

2026/8/3 13:50:41阅读更多 →
Python爬虫与数据分析高效学习路径:从基础到实战项目

Python爬虫与数据分析高效学习路径:从基础到实战项目

你是不是也刷到过那种“7天精通Python”、“学完即可就业”的标题?点进去一看,600集的课程列表,从“Hello World”讲到“人工智能”,瞬间让人既兴奋又迷茫。兴奋的是,似乎有一条捷径摆在眼前;迷茫的是&…

2026/8/3 16:39:59阅读更多 →
抖音下载器如何实现视觉素材的智能提取与组织

抖音下载器如何实现视觉素材的智能提取与组织

抖音下载器如何实现视觉素材的智能提取与组织 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具…

2026/8/3 16:39:59阅读更多 →
互联网产品经理转行AI的8大行业方向深度解析,小白也能看懂

互联网产品经理转行AI的8大行业方向深度解析,小白也能看懂

本文详细分析了互联网产品经理转行AI的8大行业方向,包括电商、AI原生应用、金融、硬件、机器人、教育、医疗和制造。文章指出,技术并非转行的首要门槛,行业选择更为关键。电商是转行的最短路径,而AI原生应用、金融、硬件、机器人、…

2026/8/3 16:39:59阅读更多 →
【AI职业图谱2024权威版】:覆盖金融/医疗/制造/教育四大领域,含19个冷启动岗位+真实薪资带宽+头部企业用人偏好

【AI职业图谱2024权威版】:覆盖金融/医疗/制造/教育四大领域,含19个冷启动岗位+真实薪资带宽+头部企业用人偏好

更多请点击: https://intelliparadigm.com 第一章:AI创造新职业的范式迁移与时代必然性 人工智能正以前所未有的深度与广度重构劳动力市场的底层逻辑。当模型参数突破千亿、多模态理解成为标配、Agent自主规划任务渐成现实,职业结构不再仅是…

2026/8/3 16:39:59阅读更多 →
TwitchNoSub终极指南:如何免费观看Twitch订阅专属内容

TwitchNoSub终极指南:如何免费观看Twitch订阅专属内容

TwitchNoSub终极指南:如何免费观看Twitch订阅专属内容 【免费下载链接】TwitchNoSub An extension to watch sub only VOD on Twitch 项目地址: https://gitcode.com/gh_mirrors/tw/TwitchNoSub 你是否曾经因为错过心爱主播的直播而感到遗憾?当你…

2026/8/3 16:39:59阅读更多 →
Spring Boot MongoDB连接池配置与调优实战

Spring Boot MongoDB连接池配置与调优实战

1. 项目概述:从一次线上告警说起 那天凌晨,手机突然狂震,监控平台发来一连串告警:应用响应时间飙升,数据库连接数逼近上限。点开日志一看,满屏的 MongoTimeoutException ,指向的正是我们那个日…

2026/8/3 16:37:58阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 0:29:53阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/3 0:33:53阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/3 0:20:37阅读更多 →
3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…

2026/8/3 0:00:32阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/3 2:32:59阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/3 2:33:01阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/3 2:33:04阅读更多 →