第二十七章 九析帶你輕鬆完爆 Istio - k8s 流量進入集羣之 Ingress

系列文章:node


總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程nginx

目錄centos

1 前言網絡

2 邀約負載均衡

3 Ingress 介紹curl

4 ingress 實例ide

    4.1 ingress 資源文件url

    4.2 service 資源文件spa

    4.3 pod 資源文件orm

5 訪問 ingress

    5.1 獲取 ingress HOST

    5.2 域名解析綁定

    5.3 訪問 ingress

6 結論


1 前言

        若是你對博客有任何疑問,請告訴我。1.png


2 邀約

        你能夠從 b 站搜索 「九析」,獲取免費的、更生動的視頻資料:clipboard2.png


3 Ingress 介紹

        Ingress 中文含義就是「入口」,很是形象地定義了這種資源的本質:Ingress 就是 k8s 的門戶。

        就像一幢建築物,好比酒店、商場等,不止一個入口,k8s 也能夠定義多個入口放流量進來。

        k8s 集羣必須部署一個 Ingress 控制器(好比 nginx、traefik 等),Ingress 控制器的做用就是建立 Ingress 資源,好讓其生效。Ingress 控制器跟 Ingress 的關係就像 nginx 跟 nginx.conf( nginx 配置文件) 同樣。

        Ingress 控制器容器內通常有兩個關鍵的進程,分別是一個負載均衡器(好比 nginx、haproxy 等)和一個控制器守護進程。控制器守護進程會從 k8s 接收所需的 Ingress 建立需求,並將其生成一個 nginx 或 haproxy 的配置片斷,並從新加載負載均衡器來使其生效。

        就拿 nginx-ingress-controller 舉例,nginx 是 nginx-ingress-controller 內部進程,也是其負載均衡器,而 nginx-ingress-controller 是 k8s 的負載均衡器。

nginx-ingress-controller 內部進程截圖以下所示:clipboard3.png


4 ingress 實例

        若是要展現 ingress 實例,須要三個資源文件:

1 ingress 流量入口資源文件

2 service 流量從入口進入後的流向資源文件

3 pod 流量最終目的地資源文件

4.1 ingress 資源文件

spacer.gifclipboard4.png

4.2 service 資源文件

spacer.gifclipboard5.png

4.3 pod 資源文件

spacer.gifclipboard6.png


5 訪問 ingress

5.1 獲取 ingress HOST

        上面介紹了 nginx-ingress-controller 其實就是 k8s 的負載均衡器,或者說 nginx-ingress-controller 就是 k8s 的 nginx。那麼 nginx-ingress-controller pod 所在宿主機地址就是 k8s 的入口地址。以下截圖所示:clipboard7.png

        由於個人 nginx-ingress-controller pod 直接採用的是 hostNetwork: true,也就是使用了宿主機的網絡命名空間。所以這裏的 Pod IP 就是宿主機的 IP,也就是說訪問的時候能夠直接使用此 IP。

5.2 域名解析綁定

        編輯 /etc/hosts(centos)文件,添加域名解析定義:

10.110.101.100 ingress.jiuxi.org

5.3 訪問 ingress

        執行以下命令訪問 ingress:

curl http://ingress.jiuxi.org

        命令執行結果以下所示:clipboard8.png


6 結論

        使用 nodeport、loadbalancer 跟 ingress 在實現路由方式上有所不一樣。對於 loadbalancer 和 nodeport,都是將流量導入到節點上的 kube-proxy 進程,後者再將流量轉發到後面的 pod。而 Ingress 負載均衡器則將流量直接轉發到選定的 Pod,這樣效率更高。

相關文章
相關標籤/搜索