簡體   English   中英

在沒有雲提供商負載均衡器的情況下,將 kubernetes 集群暴露給“世界”

[英]Exposing kubernetes clusteer to “the world” without Load Balancer of cloud provider

到目前為止,我已經建立了一個運行我的 NodeJS 部署的 kubernetes 集群。 我現在准備將它暴露給“世界”,並且在閱讀了執行此操作的服務之后,我相信它們都需要負載均衡器。 通常這些負載均衡器是由托管 kubernetes 的雲提供商創建的。 我遇到了一些限制,有些價格很高,有些對連接有限制等等......

我現在正試圖弄清楚如何避免這些負載均衡器並公開我的 kubernetes 集群,但是以一種高性能、安全和可管理的方式。 我查看了文檔,似乎提到了NodePortIngress之類的東西。 據我了解, NodePort僅適用於集群中的單台機器? 並且Ingress仍然需要來自某個地方的流量,通常是負載均衡器。

這是我目前的清單,我應該從這里 go 向公眾公開,理想情況下使用允許 SSL 證書、速率限制等的方法......生產中需要的常見東西

開發.yaml

---
# ClusterIP
apiVersion: v1
kind: Service
metadata:
  name: development-actions-cip
spec:
  type: ClusterIP
  selector:
    app: development-actions
  ports:
    - protocol: TCP
      port: 80
      targetPort: 4000
---
# Actions NodeJS server
apiVersion: apps/v1
kind: Deployment
metadata:
  name: development-actions
spec:
  replicas: 1
  selector:
    matchLabels:
      app: development-actions
  template:
    metadata:
      labels:
        app: development-actions
    spec:
      containers:
        - image: my-image/latest
          name: development-actions
          ports:
            - containerPort: 4000
              protocol: TCP

要解決這個問題有一些方法:

  1. 您可以使用稱為 MetalLB 的服務,該服務通常用於裸機部署。 它提供了一個網絡負載均衡器。
  2. 如果您不想使用雲提供商提供的負載均衡器,您可以借助反向代理(可能是 Nginx 服務)創建自定義負載均衡器。 這台機器可以是一個專用實例,只能加載路由和負載平衡功能。 在此之后創建的入口 controller 可以被允許從該機器獲取流量。 這是用戶定義的邊緣創建。
  3. 如上面的解決方案中所述,您可以將hostNetwork:true與您的 nginx-ingress Pod 一起使用,以便可以通過機器網絡直接訪問這些機器。
  4. 您可以直接將 externalIP 與 nginx 入口 pod 一起使用,您可以在其中直接將公共 IP 分配給服務並通過 Internet 連接服務。

有關更多信息和設置詳細信息,請訪問 Nginx 入口的官方文檔,網址為: https://kubernetes.github.io/ingress-nginx-anode/deployport

我已經嘗試了所有這些選項來部署我的應用程序,我的建議是,如果您使用某些雲服務來部署集群,請使用雲服務提供商的負載均衡器,因為它更加安全、高度可用和可靠。 我正在使用本地部署 go 用於用戶定義的邊緣創建或 MetalLB 服務

您可以使用hostNetwork: true在選定的專用 kubernetes 節點中部署 nginx 入口 controller 。 這意味着 nginx 將偵聽主機 VM 網絡上的端口80443 將浮動公共 IP 分配給 VM。 將 VM 的公共 IP 作為A record添加到 DNS 提供程序配置中,以將域的流量路由到 VM。

然后對於所有后端 pod 只需創建 clusterIP 服務和入口資源以將其公開給外部世界。

要使其成為 HA,您可以將相同的設置復制到多個 kubernetes 節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM