Kubernetes核心组件Ingress详解

1.1 Ingress介绍

  • Kubernetes 集群中,服务(Service)是一种抽象,它定义了一种访问 Pod 的方式,无论这些 Pod 如何变化,服务都保持不变。服务可以被映射到一个静态的 IP 地址(ClusterIP)、一个 NodePort(在集群的每个节点上的特定端口)、一个 LoadBalancer(通过云服务提供商的负载均衡器)或一个外部 IP。

  • Service的两种服务暴露方式,NodePort 和 LoadBalancer,确存在一些局限性:

    • NodePort:当一个服务被配置为 NodePort 类型时,它会在集群的所有节点上的一个静态端口上暴露服务。这种方式的缺点是,如果集群中有大量的服务,那么就需要占用大量的端口,而这些端口资源是有限的。

    • LoadBalancer:这种方式通过云服务提供商的负载均衡器来暴露服务。虽然它解决了 NodePort 方式中端口资源有限的问题,但是每个服务都需要一个单独的负载均衡器,这不仅增加了成本,而且管理起来也相对复杂。

  • 为了解决这些问题,Kubernetes 引入了 Ingress 资源对象:

    • Ingress 是一种 API 对象,它管理外部访问到集群内服务的 HTTP 和 HTTPS 路由。它提供了一种规则,允许你将外部 HTTP/HTTPS 路由到集群内的多个服务。

    • Ingress 可以提供单一的 IP 地址,通过不同的 URL 路径或不同的端口来路由到不同的服务。

    • 它只需要一个 NodePort 或者一个 LoadBalancer,就可以将多个服务暴露给外部网络,这样做既节省了资源,又简化了配置。

    • Ingress 还支持 SSL/TLS 终止,可以为不同的服务配置 SSL 证书。

    • 它允许更复杂的路由规则,比如基于路径、主机名或 HTTP 头部的路由。

image-20240516160949154

  • 实际上,Ingress相当于一个7层的负载均衡器,是kubernetes对反向代理的一个抽象,它的工作原理类似于Nginx,可以理解成在Ingress里建立诸多映射规则,Ingress Controller通过监听这些配置规则并转化成Nginx的反向代理配置 , 然后对外部提供服务。在这里有两个核心概念:

    • ingress:kubernetes中的一个对象,作用是定义请求如何转发到service的规则

    • ingress controller:具体实现反向代理及负载均衡的程序,对ingress定义的规则进行解析,根据配置的规则来实现请求转发,实现方式有很多,比如Nginx, Contour, Haproxy等等

  • Ingress(以Nginx为例)的工作原理:

    • 定义路由规则:用户通过 Kubernetes API 创建 Ingress 规则,指定域名与集群内服务的映射关系。

    • 感知规则变化:Ingress 控制器(如基于 Nginx)实时监控 Kubernetes API,以便发现 Ingress 规则的更新。

    • 生成配置:一旦检测到变化,Ingress 控制器自动生成相应的 Nginx 配置,以实现定义的路由规则。

    • 更新 Nginx 配置:新生成的 Nginx 配置被应用到运行中的 Nginx 实例,无需重启服务即可动态更新路由规则。

    • 流量转发:Nginx 作为反向代理,根据更新的配置,将外部请求转发到集群内正确的服务。

    • SSL/TLS 终止(可选):如果配置了 SSL/TLS,Nginx 还可以在转发前终止加密连接,提高安全性和效率。

image-20240516161950526

1.2 Ingress安装部署

Supported Ingress-NGINX version k8s supported version Alpine Version Nginx Version Helm Chart Version
🔄 v1.10.1 1.29, 1.28, 1.27, 1.26 3.19.1 1.25.3 4.10.1*
🔄 v1.10.0 1.29, 1.28, 1.27, 1.26 3.19.1 1.25.3 4.10.0*
🔄 v1.1.6 1.29, 1.28, 1.27, 1.26, 1.25 3.19.0 1.21.6 4.1.1*
🔄 v1.1.5 1.28, 1.27, 1.26, 1.25 3.18.4 1.21.6 4.1.0*
🔄 v1.1.4 1.28, 1.27, 1.26, 1.25 3.18.4 1.21.6 4.8.3
🔄 v1.1.3 1.28, 1.27, 1.26, 1.25 3.18.4 1.21.6 4.8.*
🔄 v1.1.1 1.28, 1.27, 1.26, 1.25 3.18.4 1.21.6 4.8.*
🔄 v1.1.0 1.28, 1.27, 1.26, 1.25 3.18.2 1.21.6 4.8.*
v1.8.4 1.27, 1.26, 1.25, 1.24 3.18.2 1.21.6 4.7.*
v1.7.1 1.27, 1.26, 1.25, 1.24 3.17.2 1.21.6 4.6.*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值