k8s 暴露服務的幾種方式


Deployment+LoadBalancer模式的Service

如果要把ingress部署在公有雲,那用這種方式比較合適。用Deployment部署ingress-controller,創 建一個type為LoadBalancer的service關聯這組pod。大部分公有雲,都會為LoadBalancer的service自 動創建一個負載均衡器,通常還綁定了公網地址。只要把域名解析指向該地址,就實現了集群服務 的對外暴露。

Deployment+NodePort模式的Service

同樣用deployment模式部署ingress-controller,並創建對應的服務,但是type為NodePort。這樣, ingress就會暴露在集群節點ip的特定端口上。由於nodeport暴露的端口是隨機端口,一般會在前面 再搭建一套負載均衡器來轉發請求。該方式一般用於宿主機是相對固定的環境ip地址不變的場景。 NodePort方式暴露ingress雖然簡單方便,但是NodePort多了一層NAT,在請求量級很大時可能對性 能會有一定影響。

DaemonSet+HostNetwork+nodeSelector

用DaemonSet結合nodeselector來部署ingress-controller到特定的node上,然后使用HostNetwork直 接把該pod與宿主機node的網絡打通,直接使用宿主機的80/433端口就能訪問服務。這時,ingresscontroller所在的node機器就很類似傳統架構的邊緣節點,比如機房入口的nginx服務器。該方式整 個請求鏈路最簡單,性能相對NodePort模式更好。缺點是由於直接利用宿主機節點的網絡和端口, 一個node只能部署一個ingress-controller pod。比較適合大並發的生產環境使用。


免責聲明!

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



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