Amazon-Web-Services

關於nginx入口的externalIp

  • December 27, 2018

當我的類型為Loadbalancer時,是否必須為 nginx 入口控制器使用externlIPs欄位?

apiVersion: v1
kind: Service
metadata:
 name: ingress-nginx
 namespace: ingress-nginx
 labels:
   app: ingress-nginx
spec:
 type: LoadBalancer
 externalIPs:
 - {{  vip_address }}
 ports:
 - port: 80
   targetPort: 80
 selector:
   app: ingress-nginx

是否有任何 aws 工具來創建和管理集群中的 VIP?

aws是否允許elasticIP代替VIP直接從外部訪問LB?

不,不需要指定externalIPs服務LoadBalancer類型。

externalIPs它是 Kubernetes 集群的一個有點不同的特性:

如果有路由到一個或多個集群節點的外部 IP,Kubernetes 服務可以在這些外部 IP 上公開。在服務埠上使用外部 IP(作為目標 IP)進入集群的流量將被路由到服務端點之一。externalIP 不由 Kubernetes 管理,由集群管理員負責。

在 ServiceSpec 中,externalIPs 可以與任何 ServiceTypes 一起指定。

可以改為指定LoadBalancer服務類型:loadBalancerIP

使用雲提供商的負載均衡器在外部公開服務。將自動創建外部負載均衡器將路由到的 NodePort 和 ClusterIP 服務。

在支持外部負載均衡器的雲提供商上,將 type 欄位設置為 LoadBalancer 將為您的服務提供負載均衡器。負載均衡器的實際創建是非同步發生的,有關已配置均衡器的資訊將發佈在Service.status.loadBalancer欄位中。

來自外部負載均衡器的流量將被定向到後端 Pod,但具體如何工作取決於雲提供商。一些雲提供商允許loadBalancerIP指定。在這些情況下,負載均衡器將使用使用者指定的loadBalancerIP. 如果loadBalancerIP未指定該欄位,則會為 loadBalancer 分配一個臨時 IP。如果loadBalancerIP指定了,但云提供商不支持該功能,則該欄位將被忽略。

***Azure特別說明:***使用使用者指定的公共類型loadBalancerIP,需要先創建一個靜態類型的公共IP地址資源,並且該資源應該與集群其他自動創建的資源在同一個資源組中。

與雲端的互動是通過雲控制器實現的。您可以在雲提供商頁面上找到支持的雲提供商列表。

對於不在 Kubernetes 核心中的雲控制器管理器,您可以在由雲供應商或 sig 領導維護的 repos 中找到相應的項目。

從 v1.8 開始,雲控制器管理器可以實現:

  • 節點控制器 - 負責使用雲 API 更新 Kubernetes 節點並刪除在您的雲上刪除的 Kubernetes 節點。
  • 服務控制器 - 負責雲上的負載平衡器與 LoadBalancer 類型的服務。
  • 路由控制器 - 負責在您的雲上設置網路路由
  • 持久卷標籤控制器 - 負責在 GCP 和 AWS 雲中創建的 PersistentVolume 上設置區域和區域標籤。
  • 如果您正在執行樹外提供程序,您希望實現的任何其他功能。

引用自:https://serverfault.com/questions/946729