ingress是什么
需求
每个Service都要有一个负载均衡服务,所以这个做法实际上既浪费成本又高。作为用户,更希望看到Kubernetes为我内置一个全局的负载均衡器。
概念
通过用户访问的 URL,把请求转发给不同的后端 Service。这种全局的,为了代理不同后端Service而设置的负载均衡服务,就是Kubernetes里的Ingress服务。
所以Ingress的功能其实很容易理解:所谓 Ingress,就是 Service 的Service。
详细说明
Ingress和Service的区别
Ingress负载均衡的后端应用是由众多Service组成的集合,本质是一个7层调度器(通过url,http,https协议进行调度)。
Servie负载均衡的后端应用是由众多Pod组成的集合,本质是一个4层调度器(iptables,ipvs进行IP包转发)。
使用Kubernetes的Ingress来创建一个统一的负载均衡器,从而实现当用户访问不同的域名时,能够访问到不同的Deployment。
注意点
最值得我们关注的,是 rules 字段。在 Kubernetes 里,这个字段叫作:IngressRule
IngressRule的Key就叫做:host
它必须是一个标准的域名格式(Fully Qualified Domain Name)的字符串,而不能是IP地址。
而host 字段定义的值,就是这个Ingress的入口。这也就意味着,当用户访问 cafe.example.com 的时候,实际上访问到的是这个Ingress对象。这样Kubernetes 就能使用IngressRule来对你的请求进行下一步转发。