Kubernetes集群的Load Balancer和Ingress辨析¶
作为大厂的螺丝钉,我们可能会把很多习以为常的部署看成理所当然,但是实际上部署一个独立的Kubernetes集群,你就会发现脱离了云计算厂商的基础设施,Kubernetes的容器部署并不仅仅是一个简单的 docker push
。
我在部署 私有云计算构建 就遇到这样的迷惑,也促使我辨析和理解Kubernetes的这两种看来相似实则不同功能的网络组件
我的简化理解¶
备注
这里我用自己的理解描述,不一定精确
简而言之 (如果你在阿里这样的工厂待过,可能会理解我的产品对应解析)
现代 Web Atlas 对外服务的网络部署实际上有两层(负载均衡):
最外面一层是4层负载均衡,也就是TCP负载均衡
对应的开源软件就是著名的
LVS
(Linux Virtual Server),只根据TCP端口分发给后端的real server(也就是一层7层负载均衡):早期WEB网站非常简单,是单层负载均衡,也就是TCP分发直接访问 Nginx 或者Apache这样的WEB服务器
现代的WEB网站做了精细的功能划分,所以会采用第二层的7层负载均衡做进一步处理(第二层7层负载均衡其实就是Kubernetes的Ingress组件)
对应于Kubernetes的组件,就是
Load Balance
术语:当我们自己部署Kubernetes集群的时候,按照Kubernetes架构就缺少了云计算厂商提供的
Load Balance
,我们必须自己部署一个最外层的负载均衡,例如开源的 Kubernetes MetalLB 负载均衡 才能实际把外部访问流量分发给 Kubernetes Ingress控制器 (否则就要采用简陋呆板的 使用端口转发来访问Kubernetes集群应用 )
第二层是7层负载均衡,对应用协议进行分析