K8s的网络

发布于:2025-03-27 ⋅ 阅读:(31) ⋅ 点赞:(0)

K8s有几层网络呢?

Kubernetes(K8s)的网络模型可以分为 四层,每一层解决不同的网络通信需求。以下是详细的分层说明:


1. 节点网络(Node Network)

  • 作用:物理或虚拟主机(节点)之间的底层网络通信。
  • 实现:依赖底层基础设施(如云厂商VPC、物理交换机、Flannel的Host-GW等)。
  • 关键点
    • 确保所有节点(Master和Worker)能通过IP相互通信。
    • 通常是宿主机网络(如eth0网卡)。

2. Pod网络(Pod Network)

  • 作用:实现同一集群内Pod-to-Pod的直接通信(无论Pod是否在同一节点)。
  • 核心要求
    • 每个Pod拥有唯一IP(IP-per-Pod模型)。
    • Pod IP跨节点互通(无需NAT)。
  • 常见实现
    • Overlay网络(如Flannel/VXLAN、Calico/IPIP):通过隧道封装跨节点流量。
    • Underlay网络(如Calico/BGP、MetalLB):直接利用底层网络路由。
    • CNI插件:负责Pod网络的配置(如分配IP、设置路由等)。

3. 服务网络(Service Network)

  • 作用:通过虚拟IP(VIP)和负载均衡暴露一组Pod,实现服务发现和稳定访问。
  • 核心组件
    • Service:通过kube-proxy维护的iptables/IPVS规则将VIP流量转发到后端Pod。
    • DNS(CoreDNS):为Service提供集群内域名解析(如my-svc.default.svc.cluster.local)。
  • 类型
    • ClusterIP(默认)、NodePort、LoadBalancer等。

4. 外部网络(External Network)

  • 作用:将集群内服务暴露到外部(如公网或企业内网)。
  • 实现方式
    • Ingress:基于HTTP/HTTPS的路由(如Nginx Ingress Controller)。
    • LoadBalancer:云厂商提供的负载均衡器(如AWS ALB)。
    • ExternalIP或NodePort:直接通过节点IP和端口访问。

网络分层流量示例

  1. 外部用户Ingress(外部网络)
  2. IngressService(服务网络)
  3. ServicePod(Pod网络)
  4. Pod另一节点上的Pod(经过节点网络)。

关键总结

层级 通信实体 典型技术
节点网络 节点之间 VPC、BGP、物理交换机
Pod网络 Pod-to-Pod Flannel、Calico、Cilium
服务网络 Service-to-Pod kube-proxy、CoreDNS
外部网络 外部到集群 Ingress、LoadBalancer

在这里插入图片描述