在K8S中,网络模型有哪些?
在 Kubernetes 中,网络模型的核心目标是解决四大关键问题:
1. Pod 间通信(跨主机互通)
2. Service 访问(服务发现与负载均衡)
3. 外部流量接入(Ingress)
4. 网络策略(安全隔离)
以下是通俗易懂的模型分类(附场景比喻):
一、Pod 网络模型(解决 Pod 间通信)
1. Overlay 网络(隧道封装)
- 原理:在物理网络之上构建“虚拟网络”,通过隧道(如 VXLAN)封装数据包。
- 比喻:快递员(数据包)穿隐身衣(隧道)跨城市(节点)送货,收件人拆开隐身衣看到真实包裹。
- 插件:Flannel (VXLAN)、Calico (IPIP/VXLAN)、Weave Net。
- 优点:不依赖底层网络设备,适合云环境。
- 缺点:隧道封装有性能损耗(约 10%~20%)。
2. 路由模型(直接路由)
- 原理:通过路由表直接转发 Pod 流量(无需封装)。
- 比喻:快递员根据导航(路由表)直达目的地,不绕路。
- 插件:Calico (BGP)、Kube-router。
- 优点:高性能,接近裸机速度。
- 缺点:需网络设备支持路由协议(如 BGP)。
3. Underlay 网络(直通物理层)
- 原理:Pod 直接使用物理网络 IP(如网卡虚拟化)。
- 比喻:快递员用收货人的真实地址送货(Pod IP = 物理 IP)。
- 插件:MACVLAN/IPVLAN、SR-IOV、AWS VPC CNI。
- 优点:极致性能(零损耗)。
- 缺点:消耗大量 IP,配置复杂。
二、Service 网络模型(解决 服务发现与负载均衡)
1. ClusterIP(集群内访问)
- 原理:为 Service 分配虚拟 IP(VIP),通过 iptables/IPVS 负载均衡到 Pod。
- 比喻:公司总机(ClusterIP)接电话后转接给员工(Pod)。
- 场景:微服务间内部调用。
2. NodePort(节点端口暴露)
- 原理:在节点上开端口(30000~32767),将流量转发给 Service。
- 比喻:公司每栋楼(节点)开一个接待窗口(NodePort),访客到窗口后转接给总机。
- 场景:开发测试环境临时访问。
3. LoadBalancer(云负载均衡器)
- 原理:调用云厂商的负载均衡器(如 AWS ELB),分配公网 IP 引流到 Service。
- 比喻:雇佣专业快递公司(云 LB)分发所有包裹。
- 场景:生产环境暴露公网服务。
三、Ingress 模型(解决 外部 HTTP(S) 访问)
1. Ingress Controller(七层代理)
- 原理:通过 Nginx/HAProxy/Traefik 等代理,根据域名和路径路由到 Service。
- 比喻:智能前台(Ingress)根据访客需求(域名
shop.com
或blog.com
)指引到不同部门。 - 核心功能:
- HTTPS 证书管理
- 按路径路由(如
/api
→ 后端服务) - 流量限速
2. Gateway API(下一代 Ingress)
- 原理:更精细的路由规则(支持 HTTP/TCP/UDP),分离路由策略与基础设施。
- 比喻:升级版前台,可定制更复杂的接待流程(如灰度发布)。
四、网络策略模型(解决 安全隔离)
1. NetworkPolicy(防火墙规则)
- 原理:基于标签控制 Pod 的进出流量(如“只允许前端 Pod 访问数据库”)。
- 比喻:办公室门禁系统(策略)只允许工牌(标签)匹配的人进入。
- 依赖插件:Calico、Cilium(需支持 NetworkPolicy)。
五、多网络模型(特殊场景)
1. Multus(多网卡支持)
- 原理:为 Pod 分配多个网络接口(如业务网 + 存储网)。
- 场景:AI 训练(高速 RDMA 网络)、金融低延迟交易。
2. 服务网格(Service Mesh)
- 原理:Sidecar 代理(如 Istio Envoy)接管流量,实现熔断/监控/加密。
- 比喻:每个员工配秘书(Sidecar),代处理所有对外沟通。
模型对比总结
模型类型 | 核心目标 | 代表技术 | 适用场景 |
---|---|---|---|
Pod 网络模型 | Pod 跨节点互通 | Flannel (Overlay)/Calico (路由) | 所有集群 |
Service 模型 | 服务发现与负载均衡 | ClusterIP/LoadBalancer | 微服务调用 |
Ingress 模型 | 外部 HTTP 访问 | Nginx Ingress/Gateway API | 暴露 Web 服务 |
网络策略模型 | 安全隔离 | NetworkPolicy | 生产环境安全 |
多网络模型 | 高性能/多网络隔离 | Multus | 金融/AI/NFV |
小白理解要点
-
Pod 通信
- 同主机:直接通过网桥(如
docker0
)。 - 跨主机:靠 Overlay(穿隧道)或路由(走导航)。
- 同主机:直接通过网桥(如
-
Service 是什么?
- 服务的“虚拟接待处”,屏蔽后端 Pod 的变化(扩缩容/重启)。
-
Ingress 做什么?
- 统一管理外部访问(一个公网 IP + 多个网站路由)。
-
网络策略有啥用?
- 充当 Pod 的“保镖”,只放行符合规则的流量。
💡 一句话总结:
Kubernetes 网络模型 = 打通 Pod 间电话(网络插件) + 设立服务总机(Service) + 配置公司前台(Ingress) + 安装门禁系统(NetworkPolicy)。