欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

kubernetes 负载平衡资源--Ingress-I。入口概念

最编程 2024-03-31 22:31:45
...

1.1 Ingress概念

使用NodePort类型的Service可以将集群内部服务暴露给集群外部客广端,但使用这种类型Service存在如下几个问题。

  • 1、一个端口只能一个服务使用,所有通过NodePort暴露的端口都需要提前规划;
  • 2、如果通过NodePort暴露端口过多,后期维护成本太大,且不易于管理;
  • 3、目前Service底层使用的是Iptables、IPVS,仅支持4层协议,无法完成https协议传输;

Kubernetes为了解决这种需求,提供了一种高级的流量管理,也就是Ingress和Ingress控制器,Kubernetes使用Ingress控制器来接收所有入口的流量,然后通过Ingress资源来定义流量如何区分,以及流量如何转发的规则。

Kubernetes为了解决这种需求,提供了一种高级的流量管理,也就是Ingress和Ingress控制器,Kubernetes使用Ingress控制器来接收所有入口的流量,然后通过Ingress资源来定义流量如何区分,以及流量如何转发的规则。

有了Ingress和Ingress控制器,我们就可以直接定义流量转发规则来发布服务,而无需创建一堆的NodePort和LoadBalance类型的Service。

1.2、 什么是Ingress

Ingress其实就是Kubernetes中的一种资源,它主要是用来定义流量转发规则。但Ingress资源自身并不能实现流量的转发和调度,它仅仅是一组流量路由的规则集合,这些规则要真正发挥作用还需要使用到Ingress控制器,由Ingress控制器读取对应的Ingress规则,然后完成流量的路由或转发。

Ingress的底层知识是通过Nginx进行封装。配置规则也是跟Nginx类似

1.3、Ingress Controller

Ingress Controller就是一类以代理HTTP/HTTPS协议为主的代理程序。如:Nginx、Traefik、Envoy、Haproxy。Ingress Controller通过Pod的形式运行在Kubernetes集群上,它能够与集群上的Pod直接通信。这样就可以让用户的流量经过Ingress控制器时直接调度到对应的Pod上。

Ingress Controller类似Nginx服务,它负责读取Ingress的规则,然后转换将规则转换为nginx.conf配置文件,这样就可以根据对应的规则来实现流量的调度。同时它还会实时感知后端Service对应的Pod变化,当Pod发生变动后,Ingress控制器会再次结合Ingress的规则,进而完成对应的配置动态更新。

在这里插入图片描述
注意:使用Ingress资源进行流量分发时,Ingress控制器可基于ingress定义的规则将客户端的请求流量直接转发至Service对应的后端Pod资源上。比如:用户请求api.oldxu.net,Ingress控制器根据对应的规则直接将请求流量调度至Pod3或Pod4,而无需经过Service对象转发。