系列文章: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 前言
若是你對博客有任何疑問,請告訴我。
2 邀約
你能夠從 b 站搜索 「九析」,獲取免費的、更生動的視頻資料:
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 內部進程截圖以下所示:
4 ingress 實例
若是要展現 ingress 實例,須要三個資源文件:
1 ingress 流量入口資源文件
2 service 流量從入口進入後的流向資源文件
3 pod 流量最終目的地資源文件
4.1 ingress 資源文件
4.2 service 資源文件
4.3 pod 資源文件
5 訪問 ingress
5.1 獲取 ingress HOST
上面介紹了 nginx-ingress-controller 其實就是 k8s 的負載均衡器,或者說 nginx-ingress-controller 就是 k8s 的 nginx。那麼 nginx-ingress-controller pod 所在宿主機地址就是 k8s 的入口地址。以下截圖所示:
由於個人 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:
命令執行結果以下所示:
6 結論
使用 nodeport、loadbalancer 跟 ingress 在實現路由方式上有所不一樣。對於 loadbalancer 和 nodeport,都是將流量導入到節點上的 kube-proxy 進程,後者再將流量轉發到後面的 pod。而 Ingress 負載均衡器則將流量直接轉發到選定的 Pod,這樣效率更高。