k8s之Service詳解-Ingress介紹


Ingress介紹

在前面的學習中已經知道,Service對集群之外暴露服務的主要方式有兩種:NodePort和LoadBalancer,但是這兩種方式,都有一定的缺點:

  • NodePort方式的缺點是會占用很多集群機器的端口,那么當集群服務變多的時候,這個缺點就愈發明顯
  • LB方式的缺點是每個service需要一個LB,浪費、麻煩,並且需要k8s之外設備的支持

基於這種現狀,k8s提供了Ingress資源對象,Ingress只需要一個NodePort或者一個LB就可以滿足暴露多個Service的需求。工作機制大致如下表所示:

 

實際上,Ingress相當於一個7層的負載均衡器,是k8s對反向代理的一個抽象,它的工作原理類似於Nginx,可以理解成在Ingress里建立諸多映射規則,Ingress Controller通過監聽這些配置規則並轉化成Nginx的配置,然后對外部提供服務。在這里有兩個核心概念:

  • ingress:k8s中的一個對象,作用是定義請求如何轉發到service的規則
  • ingress controller:具體實現反向代理及負載均衡的程序,對ingress定義的規則進行解析,根據配置的規則來實現請求轉發,實現方式有很多,比如nginx,contour,haproxy等等。

Ingress(以nginx為例)的工作原理如下:

  1. 用戶編寫ingress規則,說明哪個域名對應k8s集群中的哪個service
  2. ingress控制器動態感知ingress服務規則的變化,然后生成一段對應的nginx配置
  3. ingress控制器會將生成的nginx配置寫入到一個運行着的nginx服務中,並動態更新
  4. 到此為止,其實真正在工作的就是一個nginx了,內部配置了用戶定義的請求轉發規則

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM