kubernetes系列(五) - kubernetes网络原理
目录
前言#
关于kubernetes网络,需要了解以下知识:
- kubernetes的网络原型是什么
- docker背后的网络基础是什么
- docker自身的网络模型和局限是什么
- kubernetes的网络组件之间是如何通信的
- 外部如何访问kubernetes集群
- 有哪些开源组件支持kubernetes的网络集群
1. kubernetes网络模型#
kubernetes的网络模型假定了所有的pod都在一个直接连通的扁平的网络空间中,kubernetes运行的基础是假定这个网络已经存在。
自己搭建集群的话,需要自己实现这个网络假定,就是通过
flannel
和calico
等组件
2. kubernetes的组件之间如何通讯#
2.1 同一个pod内的多容器之间#
前面了解过,同一个pod
之间是有一个根容器pause
,且共用一个pod ip
的,所以容器之间的通讯是通过pause
的网络栈的lo(无线网卡)
,直接使用localhost来互相访问
2.2 各个pod直接的通讯#
2.2.1 同一个节点上的pod互相通讯#
如上图,同一个node
上的pod
之间,是连接到同一个docker0网桥
上的, 地址段相同,所以可以直接通信
2.2.2 不同节点上的pod之间的通信#
通过开源网络组件flannel
开实现
flannel
能协助kubernetes
,给每一个node伤的每个pod都分配一个不冲突的ip- 且能在这些ip之中建立一个覆盖网络,通过这些
覆盖网络overlay network
,原封不动地传递到目标容器内
etcd为flannel提供的支持
- 存储管理flannel可分配的ip地址资源段
- 监控etcd中每个pod的实际地址,并在内存中建立维护pod节点路由表
2.3 pod和service之间的通讯#
目前基于性能考虑,全部为iptables维护和转发。
新版本中已经替换为
lvs
2.4 外网访问pod#
通过service nodeport完成
3. kubernetes的三层网络#
三层分别是:
- pod网络
- service网络
- 节点(node)网络
真实的、具体的网络只有节点网络
,其他两层都是虚拟的内部网络
分类:
Kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?