k8s中的ingress使用上層負載均衡進行設置訪問


注意:這種情況下需要有個前提條件,也就是ingress-nginx-controller安裝后的service是NodePort或者hostNetwork模式,而不能是ClusterIP,因為負載均衡器添加后端主機的時候需要監聽后端主機的端口


情況介紹

1.k8s集群有8個節點,3個節點是master,分別是master1,master2,master3. 5個worker節點,分別是worker1,worke2,worke3,worker4,worker5
2.彈性公網IP綁定到worke3節點上,域名解析到這個彈性公網IP上
3.nginx-ingress-congtoller是使用kuboard界面本身提供安裝的,使用nodeport形式,監控主機的80和443端口,安裝完畢后會有這個提示

4.人為調整nginx-ingress-congtoller的pod只部署在worker3節點上

5.查看worker3主機上的80和443端口開放情況

6.ingress規則添加情況

問題

上述雖然能訪問使用,但是主要訪問入口承載是在worke3節點上,若是worke3節點有問題,則整個集群都無法訪問使用。
解決辦法也比較繁瑣;
1.彈性公網IP綁定worker2主機上
2.人為調整nginx-ingress-congtoller的pod部署在worker2節點上

因此想着使用雲廠商提供的負載均衡器解決上述問題,就算其中某一個主機掛了,也不影響正常訪問使用

改造情況

1.雲廠商申請一個私網的負載均衡器,綁定上述的彈性公網IP
2.調整nginx-ingress-congtoller的pod分布於全部節點或部分節點 (具體參考文章:https://www.cnblogs.com/sanduzxcvbnm/p/15936003.html)
3.把第二步中有nginx-ingress-congtoller pod的節點添加到負載均衡器的后端主機中
4.雲廠商負載均衡設置情況 (需要關閉健康檢查)
負載均衡監聽80端口,后端用的協議是http,添加后端主機后,轉發的主機端口不能是80,根據第三步的情況,填寫30466端口,若是轉發后端主機的443端口,應該填寫32492端口

開啟健康檢查會報異常,導致訪問網址404

5.ingress規則添加情況

6.worker3主機上的其他服務單獨設置監聽主機訪問

7.關於https訪問
7.1 ingress規則中不用再加載https證書的了,也不用添加訪問http強制跳轉https的注解了,這個也在負載均衡上進行配置
7.2 負載均衡器監聽443端口,后端主機轉發端口也是走http協議,因此填寫用的也是用30466端口 (根據圖示)

若是負載均衡器監聽443端口,后端轉發主機上填寫也是轉發的443端口(實際是32492端口),訪問則會報錯如下:

7.3 負載均衡器監聽80端口重定向到 監聽443端口上


免責聲明!

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



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