0
点赞
收藏
分享

微信扫一扫

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是什么_动态生成_02


3. ingress Controller

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


kubernetes Ingress是什么_kubernetes_03

所以,总的来说要使用 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是什么_负载均衡_04

访问流程 

  用户->Ingress controller->Pod


5. 如何部署ingress

qq.com/s/NmaJIHBUVRuSMnfX51ACag">​https://mp.weixin.qq.com/s/NmaJIHBUVRuSMnfX51ACag

真一文搞定 ingress-nginx 的使用

qq.com/s/UFqCkqUtlpT9PtaFiK6QHQ">​https://mp.weixin.qq.com/s/UFqCkqUtlpT9PtaFiK6QHQ






举报

相关推荐

0 条评论