K8S學習筆錄 - 暴露服務

原文連接node

在搭建好集羣以後,咱們還須要將集羣的服務暴露到外部提供服務給客戶端nginx

目前來說有如下幾種方案能夠暴露服務git

  1. 服務類型設置爲NodePort
  2. 服務類型設置爲LoadBalance
  3. 使用Ingress資源

本篇先了解前兩類服務github

NodePort

在設置爲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

service-expose

LoadBalance

對於使用負載均衡器,則須要雲服務平臺提供支持。網絡

apiVersion: v1
kind: Service
metadata:
 name: nginx
spec:
 type: LoadBalance
 ports:
 - port: 8080
 targetPort: http
 selector:
 app: nginx
複製代碼

客戶端經過端口鏈接到服務後,服務進行隨機選擇處理此請求的Pod,該Pod可能會是部署在其餘節點上的Pod,此時即可能產生額外的網絡跳數。 能夠經過設置而服務的配置 spec.externalTrafficPolicyLocal 讓服務優先使用與本身同一節點上的Pod。app

但如此之下可能會產生每一個Pod的負載不均衡的狀況,當有A、B兩個節點,分別有1和2個Pod時,在負載均衡器的做用下流量均勻的分佈在A和B兩個節點。 而服務優先使用本節點上的Pod,就倒着A節點上的Pod的流量爲50%,而B節點上的Pod的流量均爲25%。負載均衡

service-balancer

Ingess

見另外一篇 K8S學習筆錄 - 使用Ingress暴露服務oop

相關文章
相關標籤/搜索