惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Schneier on Security
Blog — PlanetScale
Blog — PlanetScale
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
NISL@THU
NISL@THU
T
Threat Research - Cisco Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Latest news
Latest news
H
Help Net Security
雷峰网
雷峰网
Spread Privacy
Spread Privacy
Cyberwarzone
Cyberwarzone
Project Zero
Project Zero
Security Latest
Security Latest
Know Your Adversary
Know Your Adversary
人人都是产品经理
人人都是产品经理
P
Privacy & Cybersecurity Law Blog
M
MIT News - Artificial intelligence
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Proofpoint News Feed
U
Unit 42
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
博客园 - 三生石上(FineUI控件)
Stack Overflow Blog
Stack Overflow Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
量子位
C
Cyber Attacks, Cyber Crime and Cyber Security
S
Securelist
S
Security @ Cisco Blogs
T
Threatpost
P
Palo Alto Networks Blog
C
Check Point Blog
V
Vulnerabilities – Threatpost
T
Tailwind CSS Blog
B
Blog RSS Feed
Recorded Future
Recorded Future
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
P
Proofpoint News Feed
P
Privacy International News Feed
AWS News Blog
AWS News Blog
博客园 - 叶小钗
WordPress大学
WordPress大学

博客园 - lvlin241

SQL 核心与大数据开发实战:从原理到落地的体系化认知 Hadoop 3.2.1 集群脑裂问题深度解析与防护实践 Hadoop集群脑裂问题深度解析与防护实践 Flink Checkpoint 实现机制概述 Embedding Tools 2022-11-28 09:39 深入解析IO模型:从阻塞到异步的演进之路 k8s系列_基础运维&&YAML windows docker-desktop配置镜像加速器 更改windows Docker-Desktop 镜像默认存储位置 windows 安装 docker 问题“docker engine failed to start...” flink集群运行模式 idea 2019.2 or 2021.3 marketplace plugins are not loaded. Check the internet connection and refresh 解决思路 GC垃圾回收器选择小总结 JDK Document version docker 安装镜像-----redis docker 安装镜像-----mysql linux设置docker阿里云镜像 在线流程图设计工具
k8s_网络&&存储
lvlin241 · 2025-09-10 · via 博客园 - lvlin241

一、 K8s 网络架构:让万物互联

在 K8s 中,网络的设计哲学是:扁平化。它要求所有 Pod 即使不在同一台物理机上,也能像在局域网内一样直接通信。

1. 三层通信逻辑

K8s 网络解决的是四个层面的对话:

  • 容器间通信: 同一个 Pod 内的容器共享网络栈(通过 localhost 访问)。

  • Pod 到 Pod: 跨节点的 Pod 通过 CNI(容器网络接口) 插件(如 Calico, Flannel)打通的隧道直接互访。

  • Pod 到 Service: 通过 iptablesIPVS 规则,将流量均衡到后端 Pod。

  • 外部到内部: 通过 IngressLoadBalancer 接入流量。

2. 核心组件:CNI (Container Network Interface)

CNI 是 K8s 网络的标准接口。

  • 实际应用: 当部署一个新 Pod 时,Kubelet 会调用 CNI 插件。插件会为 Pod 分配一个唯一的集群 IP,并配置好路由,确保这个 IP 在全集群范围内可达。

二、 K8s 存储架构:从“临时”到“永恒”

容器天生是“无状态”的,重启后数据就会消失。为了保存数据库或日志,K8s 设计了一套极其精妙的解耦存储体系PV / PVC / StorageClass

1. 存储三剑客的关系

为了让“开发人员”不关心底层的存储细节,K8s 把存储分成了三层:

角色   对象   类比   职责
底层资源  PV (Persistent Volume) 一块硬盘 由管理员配置的真实存储资源(NFS, Ceph, 云硬盘等)。
需求声明 PVC (Persistent Volume Claim) 申请单 开发人员定义的“需求”(我要 10G 空间,读写权限)。
自动化生产  StorageClass 自动售货机  自动根据 PVC 的需求创建对应的 PV,无需人工介入。

2. 实际应用场景:部署一个 MySQL

  1. 管理员配置一个 StorageClass(对接阿里云或 AWS 磁盘)。

  2. 开发者提交一个 PVC,声明需要 50GB 存储。

  3. K8s 自动创建 PV 并将其“挂载”到 MySQL Pod 的 /var/lib/mysql 目录。

  4. 结果: 即使 MySQL Pod 挂了,新拉起的 Pod 只要挂载同一个 PVC,数据依然完好无损。

思考: 在大型公司里,有几十个团队共用一个 K8s 集群。如何保证 A 团队的开发人员不会误删 B 团队的 Pod?如何限制某个应用只能使用 2GB 内存?

三、RBAC 权限控制与资源隔离

1. Namespace(命名空间):逻辑上的“隔断墙”

在 K8s 中,Namespace 是实现多租户隔离的第一步。它就像是公司里不同的部门办公室。

  • 默认状态: 你部署的所有东西都在 default 空间。

  • 实际应用: * 按环境划分:dev(开发)、test(测试)、prod(生产)。

    • 按团队划分:order-team(订单组)、payment-team(支付组)。

  • 隔离效果:dev 空间下执行 kubectl get pods,你看不到 prod 空间里的任何资源。

2. RBAC(基于角色的访问控制):集群的“门禁卡”

RBAC 决定了“谁(Subject)”能对“什么资源(Resource)”做“什么操作(Verb)”。

核心四要素

  1. Subject(主体): 谁在操作?(是一个开发人员,还是一个自动化的程序 ServiceAccount)。

  2. Role(角色): 能干什么?(比如:只能查看 Pod,不能删除 Pod)。

  3. Resource(资源): 对谁操作?(Pod、Deployment、Service)。

  4. RoleBinding(绑定): 把“人”和“角色”关联起来。

实际应用场景

  • 场景 A: 给实习生发一张“只读卡”。他只能看日志排查问题,但没有任何修改权限。

  • 场景 B: 给 Jenkins 自动化流水线发一张“发布卡”。它只能更新 Deployment 的镜像,不能修改网络配置。

3. Resource Quotas(资源配额):防止“独占资源”

在一个共享集群中,最怕某个应用出现内存泄漏,把整台宿主机的资源吃光,导致其他应用崩溃。K8s 通过两个层面来管控:

  • ResourceQuota(部门限额): 限制一个 Namespace 总共能用多少 CPU 和内存。

    例子:给“开发组”分配总共 16 核 CPU 和 32GB 内存。一旦超标,新 Pod 将无法启动。

  • LimitRange(个人限额): 限制单个 Pod 最小和最大能申请多少资源。

    例子:强制要求每个 Java 应用必须设置 request(保障值)和 limit(限制值)。

总结:K8s 架构的完整拼图