Kubernetes 网络架构学习笔记
2022-06-14 本文已影响0人
国服最坑开发
参考: https://blog.csdn.net/qq_35789269/article/details/113922038
看了这么多, 这个大佬讲的比较到位, 赞!
1.典型的Pod网络
![](https://img.haomeiwen.com/i3004399/a18280c521b60780.png)
- eth0 : Node主机物理网卡
- docker0: 虚拟网格/交换机
- veth0: Pod内部虚拟网卡
- pause实例: 用于创建 veth0
2.不同Node/Pod通信方式
一般有两种:
-
直接在路由器上配置路由
路由
-
覆盖技术: 类似VPN技术
VPN
2.1 CNI (Container Network Interface)
为了统一Pod网络实现, K8s定义一套接口 (Java的门面模式?)
![](https://img.haomeiwen.com/i3004399/e4bb87c5c6d754a9.png)
3. Service 网络模型
Service实现两个功能:
- 服务发现(Service Discovery)
- 负载均衡(Load Balancing)
![](https://img.haomeiwen.com/i3004399/48118bd042a4a744.png)
- Kubelet : 把Deployment 生成的Pod IP 上报给 Master
- ClusterIP: Service 对象会生成一个虚拟IP
- Kube-Proxy: 把ClusterIP 和 Pod IP 列表的映射关系更新到iptables
4.NodePort
Service是可以直接把内部服务端口暴露出来的. 可用范围: 30000~32767范围内的端口
3.1 LoadBalancer
如果把Service 定义为LoadBalancer 类型, 云厂商会生成外部的 LB + 独立IP
![](https://img.haomeiwen.com/i3004399/2359a0255cf0b11d.png)
- 短板: 需要为每一个服务分配一套公网LB, 比较浪费.
3.2 Ingress
为解决 3.1 的短板, 在集群内部构建一个七层路由层.
![](https://img.haomeiwen.com/i3004399/718f4c019ab1fbf0.png)
总结
![](https://img.haomeiwen.com/i3004399/b2179909a1dc2dc9.png)