關於nginx入口的externalIp
當我的類型為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 上設置區域和區域標籤。
- 如果您正在執行樹外提供程序,您希望實現的任何其他功能。