kubernetes Ingress是什么

 

1. ingress

Ingress 是 k8s 资源对象,用于对外暴露服务,该资源对象定义了不同主机名(域名)及 URL 和对应后端 Service(k8s Service)的绑定,根据不同的路径路由 http 和 https 流量。

 

2. nodePort,LoadBalancer 和 Ingress的关系

向 k8s 集群外部暴露服务的方式有三种: nodePort,LoadBalancer 和 Ingress。

nodePort 方式在服务变多的情况下会导致节点要开的端口越来越多,不好管理。

LoadBalancer 更适合结合云提供商的 LB 来使用,但是在 LB 越来越多的情况下对成本的花费也是不可小觑。

kubernetes Ingress是什么

我们可以看到两个 LoadBalancers 都有自己的 IP,如果我们向 LoadBalancer 22.33.44.55发送请求,它请被重定向到我们的内部的 service-nginx 服务去。如果发送请求到 77.66.55.44,它将被重定向到我们的内部的 service-python 服务。

这个确实很方便,但是要知道 IP 地址是比较稀有的,而且价格可不便宜。想象下我们 Kubernetes 集群中不只是两个服务,有很多的话,我们为这些服务创建 LoadBalancers 成本是不是就成倍增加了。

 

Ingress 是 k8s 官方提供的用于对外暴露服务的方式,也是在生产环境用的比较多的方式,一般在云环境下是 LB + Ingress Ctroller 方式对外提供服务,可以使用 Ingress 来使内部服务暴露到集群外部去,它为你节省了宝贵的静态 IP,因为你不需要声明多个 LoadBalancer 服务了,此次,它还可以进行更多的额外配置。

kubernetes Ingress是什么

 

3. ingress Controller

Ingress Contoller 是一个 pod 服务,封装了一个 web 前端负载均衡器,同时在其基础上实现了动态感知 Ingress 并根据 Ingress 的定义动态生成 前端 web 负载均衡器的配置文件,比如 Nginx Ingress Controller 本质上就是一个 Nginx,只不过它能根据 Ingress 资源的定义动态生成 Nginx 的配置文件,然后动态 Reload。

 

kubernetes Ingress是什么

所以,总的来说要使用 Ingress,得先部署 Ingress Controller 实体(相当于前端 Nginx),然后再创建 Ingress (相当于 Nginx 配置的 k8s 资源体现),Ingress Controller 部署好后会动态检测 Ingress 的创建情况生成相应配置。Ingress Controller 的实现有很多种:有基于 Nginx 的,也有基于 HAProxy的,还有基于 OpenResty 的 Kong Ingress Controller 等,更多 Controller 见:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/,本文使用基于 Nginx 的 Ingress Controller:ingress-nginx

 

4.Pod与Ingress的关系

  • 通过service相关联
  • 通过Ingress Controller实现Pod负载均衡
  • 支持TCP/UDP 4层和7层

kubernetes Ingress是什么

访问流程 

  用户->Ingress controller->Pod

 

5. 如何部署ingress

https://mp.weixin.qq.com/s/NmaJIHBUVRuSMnfX51ACag

真一文搞定 ingress-nginx 的使用

https://mp.weixin.qq.com/s/UFqCkqUtlpT9PtaFiK6QHQ

 

 

 

 

 

 

https://www.cnblogs.com/minseo/p/12455320.html

神作https://mp.weixin.qq.com/s/NmaJIHBUVRuSMnfX51ACag

https://blog.csdn.net/qianghaohao/article/details/99354304

上一篇:k8s学习记录,Ingress及其安装(十四)


下一篇:kubernetes部署Ingress Controller