Service 的表现形式为 IP 地址和端口号
(CusterIPPort),即工作在TCP/IP 层。而对于基于 HTTP 的服务来说,不同的 URL 地址
经常对应到不同的后端服务或者虛拟服务器( Virtual Host),这些应用层的转发机制仅通
过Kabernetes 的 Service 机制是无法实现的。Kubernctes 从 1.1 版本开姶引人 Ingress 资源
对象,用于将 Kubernetes 集群外的客户端请求路由到集群内部的服务上,同时提供 7层
(HTTP 和 HITTPS)路由功能。Ingress 在Kubermetes 1.19 版本时达到 v1 稳定版本。
Kubernetes 使用了
• 个Ingress 策略定义和一个具体提供转发服务的 Ingress
Controller,两者结合,实现了基于灵活 Ingress 策略定 义的服务路由功能。如果是对
Kubernetes 集群外部的容户端提供服务,那么Ingress Controller 实现的是类似于边缘路由
器(Edge Router)的功能。需要注意的是,Ingress 只能以 HITTP 和 HTTPS 提供服务,对
手使用其他网络协议的服务,可以通过设置 Service 的类型(type)为 NodePort 或
LoadBalancer 对集群外部的客户端提供服务
使用 Ingress 进行服务路由时,Ingress Controller 基于 Ingress 规则将客户端请求直接
转发到 Service 对应的后端 Endpoint ( Pod)上,这样会跳过 kube-proxy 设置的路由转发规
则,以提高网络转发效率
案例:
对 http://mywebsite.com/api 的访问将被路由到后端名为api的service上
对 http://mywebsite.com/web 的访问将被路由到后端名为web的service上
对 http://mywebsite.com/docs 的访问将被路由到后端名为docs的service上
ingress 7 层路由机制
于 2022-07-28 17:40:02 首次发布