原文連接node
在搭建好集羣以後,咱們還須要將集羣的服務暴露到外部提供服務給客戶端nginx
目前來說有如下幾種方案能夠暴露服務git
本篇先了解前兩類服務github
在設置爲NodePort以後,將會在集羣節點上暴露一個端口,使得該服務除了能夠經過集羣內部的IP訪問外,也能夠經過節點的IP:PORT進行訪問。api
apiVersion: v1 kind: Service metadata: name: nginx spec: type: NodePort ports: - port: 8080 targetPort: http nodePort: 31602 selector: app: nginx 複製代碼
此配置中規定了暴露符合標籤中帶有 app: nginx
的服務,而且將其端口映射到節點的31602端口上。 建立後,內網訪問該服務能夠經過內網IP:8080訪問,外網訪問能夠經過節點IP:31602訪問。markdown
對於使用負載均衡器,則須要雲服務平臺提供支持。網絡
apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalance ports: - port: 8080 targetPort: http selector: app: nginx 複製代碼
客戶端經過端口鏈接到服務後,服務進行隨機選擇處理此請求的Pod,該Pod可能會是部署在其餘節點上的Pod,此時即可能產生額外的網絡跳數。 能夠經過設置而服務的配置 spec.externalTrafficPolicy
爲 Local
讓服務優先使用與本身同一節點上的Pod。app
但如此之下可能會產生每一個Pod的負載不均衡的狀況,當有A、B兩個節點,分別有1和2個Pod時,在負載均衡器的做用下流量均勻的分佈在A和B兩個節點。 而服務優先使用本節點上的Pod,就倒着A節點上的Pod的流量爲50%,而B節點上的Pod的流量均爲25%。負載均衡
見另外一篇 K8S學習筆錄 - 使用Ingress暴露服務oop