ingress作为Kubernetes中的负载解决方案,引得很多人关注,下面做一些简单的剖析。
ingress必须有ingress-controller才可以生效,均部署在pod中,需要多节点来避免单点故障。ingress可以收集Kubernetes集群中的各个Service,以二级域名的方式连接后端不同Service的端口,然后用一个端口和域名或IP暴露在外网中,此方案可以解决因为过多需要访问外网的Service而导致node需要暴露过多的端口,也可以解决内部POD之间的负载均衡。
但是ingress并不能解决node之间的负载均衡及高可用,一旦暴露nodeIP的ingress节点故障,则该功能无法使用,所以前端还是需要有负载均衡设备来处理物理级别的负载及高可用(F5或者LVS均可)。
具体的选择则可以根据产品需要暴露到外网的Service端口而决定;
1、过多的时候还是使用ingress方案较好,毕竟只暴露一个端口会安全很多。
2、如果数量级较低则直接采用Service nodeport方式暴露即可