参考: https://blog.csdn.net/qq_35789269/article/details/113922038
看了这么多, 这个大佬讲的比较到位, 赞!
1.典型的Pod网络
Pod网络- eth0 : Node主机物理网卡
- docker0: 虚拟网格/交换机
- veth0: Pod内部虚拟网卡
- pause实例: 用于创建 veth0
2.不同Node/Pod通信方式
一般有两种:
-
直接在路由器上配置路由
路由 -
覆盖技术: 类似VPN技术
VPN
2.1 CNI (Container Network Interface)
为了统一Pod网络实现, K8s定义一套接口 (Java的门面模式?)
CNI
3. Service 网络模型
Service实现两个功能:
- 服务发现(Service Discovery)
- 负载均衡(Load Balancing)
- 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
LoadBalance
- 短板: 需要为每一个服务分配一套公网LB, 比较浪费.
3.2 Ingress
为解决 3.1 的短板, 在集群内部构建一个七层路由层.
Ingress
网友评论