ingress与ingress-controller
ingress分为两个概念,ingress和ingress-controller
ingress:指的是k8s中的一个api对象,一般用yaml配置,作用是定义请求如何转发到service的规则,也就是配置的规则
ingress-controller:一个容器,容器中运行着负载均衡的程序,比如ingress-nginx、ingress-haproxy。ingress-controller会对ingress定义的规则进行解析,根据配置的规则来实现请求转发。
ingress常见的部署范式
1. Deployment+LoadBalancer模式的Service
这中方式适合在公有云,用deployment部署ingress-controller,创建一个type为LoadBalancer的service关联这组pod
2. Deployment+NodePort模式的Service
同样用deployment模式部署ingress-controller,并创建对应的服务,但是type为NodePort。这样,ingress就会暴露在集群节点ip的特定端口上。由于nodeport暴露的端口是随机端口,一般会在前面再搭建一套负载均衡器来转发请求
3. DaemonSet+HostNetwork+nodeSelector
用DaemonSet结合nodeselector来部署ingress-controller到特定的node上,然后使用HostNetwork直接把该pod与宿主机node的网络打通,直接使用宿主机的80/433端口就能访问服务。
https://blog.csdn.net/yujia_666/article/details/109155467 参考文档