深入理解K8S四层网络

模仿七层网络模型,抽象出四层模型

POD网络   

同一节点上的pod网络

- 依赖于虚拟网桥/网卡(linux虚拟设备)

- pod内容器共享网络栈(pause容器创建)

不同节点上的pod网络

- 路由方案:依赖于底层网络设备,但性能开销小

- 覆盖网络:不依赖于底层网络,但有封包解包开销

CNI:容器网络接口

- 是一个pod网络集成标准,简化k8s和不同pod网络实现技术的集成

Service网络

- service网络构建于pod网络之上,目的在于:

  1. 服务发现service discovery

  2. 负载均衡load balancing

- servicename+clusterip统一屏蔽服务发现和负载均衡,原理基于DNS+service registry

- 客户端kube-proxy + iptables转发,无倾入不穿透性能损耗比较小

- k8s的服务发现机制可以认为是现代微服务发现机制+传统linux内核机制的融合

服务网络实现原理

服务发现:k8s方案 vs Eureka+Ribbon方案

NodePort vs LoadBalancer vs Ingress对外暴露服务方案

- NodePort 将service暴露在节点网路上,nodeport背后是kube-proxy。kube-proxy是沟通service网络、pod网络和节点网络的桥梁

- LoadBalancer 将service暴露在公网上+负载均衡,背后对接nodeport,公有云支持但收费

- Ingress 同时将多个HTTP服务暴露到外网,但是只需申请一个或少量LB,七层反向代理,相当于一种特殊的service

- 通过kubectl proxy或者port forward,可以在本地环境快速调试k8s中的服务或pod

- k8s的Service发布的三种type : 

  - type=ClusterIP,表示内部可以访问服务

  - type=NodePort,表示通过NodePort对外暴露的服务

  - type=LoadBalancer,表示通过LoadBalancer对外暴露服务

 

深入分析Kube-Proxy

理解netfilter和iptables

kube-proxy的三种工作模式

用户空间代理模式

已经基本淘汰

iptables模式

生产适用,中小规模集群

ipvs模式

生产适用,大规模集群

posted @ 2022-11-11 10:04  _Zeno  阅读(477)  评论(0编辑  收藏  举报