1. 程式人生 > 其它 >|NO.Z.00162|——————————|CloudNative|——|KuberNetes&服務釋出.V13|-------------------------------------------------------|ingress.v01|架構|

|NO.Z.00162|——————————|CloudNative|——|KuberNetes&服務釋出.V13|-------------------------------------------------------|ingress.v01|架構|



[CloudNative:KuberNetes&服務釋出.V13]                                                               [Applications.KuberNetes] [|DevOps|k8s|服務釋出|什麼是Ingress|使用helm安裝ingress|Ingress簡單使用|Ingress多級域名使用|]








一、Ingress概述:ingress架構
二、ingress架構說明
### --- ingress架構說明

~~~     # 通過service:
~~~     也可以釋出一些服務,通過service的NodePort的方式也可以在外網暴露一些埠,
~~~     通過IP+埠號的形式也可以實現外網訪問,這個埠號也可以代理到k8s內部的服務,
~~~     也就實現了服務釋出的方式。那麼我們為什麼還需要引入Ingress呢?
~~~     # 在service的前面,加入一個nginx的代理,也可以實現通過域名的方式釋出服務,
~~~     # 但是為什麼還要引入Ingress呢?

~~~     # NodePort的效能:
~~~     在service比較多的時候,效能會非常慢,
~~~     比如說你的k8s上有成百上千的服務,那麼是不是要管理成百上千的NodePort,
~~~     這樣去管理它的埠也會特別的痛苦。
~~~     # Ingress在k8s中可以在網路的4層或者層可以實現埠的代理。實現域名釋出的方式。
三、傳統的架構如何釋出服務的
### --- 傳統的架構如何釋出服務的

~~~     # 先部署一個應用到宿主機,啟動這個應用,這個應用會暴露一個埠號,
~~~     就會通過宿主機加埠號訪問到這個服務。
~~~     # 但是在生產環境中,不可能會讓使用者通過IP地址+埠號訪問我們的服務,
~~~     這樣體驗非常不好,而且這個IP地址+埠號是非常難記的,而且可能還會發生變更,
~~~     我們就會在這個埠號前加入nginx,並配置一個域名,這個域名反代到這個宿主機的應用上,
~~~     # 這個域名反代到服務上,是沒有辦法解析的,
~~~     所以我們需要通過域名廠商,購買一個域名,
~~~     通過購買的這個域名就會解析到我們公司的入口nginx或者其他反代上面;比如F5或者LVS等,
~~~     然後代理到我們的這個nginx,就實現了雲釋出的方式
四、k8s腳骨如何釋出服務的
### --- k8s腳骨如何釋出服務的

~~~     # 在使用容器部署應用之後,這個容器時定義了這個應用解析方式的,
~~~     然後容器一旦啟動,它的程式就會啟動,程式啟動之後,容器就會暴露一個埠號,
~~~     啟動一個程序,這個程序就會監聽埠號,
~~~     然後在通過配置一個service,來代理到我們pod上,通過selector來選擇它需要戴麗麗的Pod上面,
~~~     # 配置一個service之後,可以用作service服務之間的訪問,比如serviceA訪問serviceB;
~~~     那我們也可以使用Ingress,在service上面在加入一層,它的角色還是nginx,在Ingress上面配置之後,
~~~     通過Ingress所在的宿主機的IP地址+埠號,
~~~     把這個域名解析到宿主機上,就可以通過這個域名訪問到這個服務了。
~~~     # 我們是在k8s內部,在Ingress上面還有一層:F5 LVS SLB ELB來解析。
~~~     比如F5去代理到Ingress的80埠上,之後再把購買的域名解析到F5上,解析了這個之後,
~~~     # 再通過自動代理的方式到我們的Ingress,Ingress到service,再到pod,這樣就實現了服務釋出的方式。
五、使用Ingress的優點
### --- 使用Ingress的優點

~~~     不用去關係內部的Pod的埠號等操作。不需要去維護我們的service,
~~~     我們可以吧所有的service都使用一個埠號,可以都是用80 ,
~~~     因為所有的service都有自己的IP地址,所以都是用80也不會造成服務的衝突。
~~~     代理到某個service的80埠上,就可以實現訪問我們的服務。
六、什麼是Ingress
### --- 什麼是Ingress

~~~     通俗來講,ingress和之前提到的Service、Deployment,
~~~     也是一個k8s的資源型別,ingress用於實現用域名的方式訪問k8s內部應用。








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)