kubernetes学习笔记22:网络模型
k8s网络模型约法三章:任意两个pod之间可以直接通信,无需经过显示使用nat来接受数据和地址的转换;node和pod直接通信,无需明显地址转换;pod看见自己的ip跟别人看见IP是一样的,无需转换。
network namespace是实现网络虚拟化的内核基础,创建了隔离的网络空间,拥有独立的附属网络设备,独立的协议栈TCP,IP地址和路由表,IPtables规则,ipvs等。
pod和network namespace关心:每个pod有独立的网络空间,pod net container共享网络空间,用loopback接口进行通信,所有container通过pod的IP对外提供服务,对于宿主机的root ns是一个特殊的网络空间,pid是1。
容器网络模型店四大目标:容器和容器之间的通信,pod和pod之间的通信,pod和service之间的通信,外部世界和service之间的通信。k8s容器网络实现方案百花齐放,主要解决跨主机通信的,统称overlay(也叫覆盖网络,运行在应用层就是L7层之上的,不是依靠IP地址来传递信息,而是采用一种映射机制,即把IP地址和identifiers映射来资源定位),分别有flannel(udp,因为是内核态复制到用户太,而且还有封包转发和解包,性能最低;vxlan因为是Linux内核支持的功能,所以不需要复制到用户态,直接在内核态完成,但是也要udp封包转发和udp解包,所以性能相对好一点;host-gw模式就是把宿主机当网关,也称为直接路由,不需要封包和解包,所以性能最好,但是有限制条件,就是集群和宿主机要在一个子网中,也就是二层网络可达),calico,canal,weavenet等。network policy提供了基于策略的网络控制,用于隔离应用减少攻击,可以使用标签选择器(namespaceselector和podselector),流方向(ingress和egress),流特征:对端,IP段,协议,端口。
需要注意点:APIserver开启extensions/v1beta1/networkpolicies;网络插件支持network policy如calico,romana,weavenet和trireme等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?