簡體   English   中英

將所有 TCP 和 UDP 端口從負載均衡器轉發到 Azure Kubernetes 服務上的 nginx 入口

[英]Forward all TCP and UDP ports from load balancer to nginx ingress on Azure Kubernetes Service

我正在嘗試使用 kubernetes 實現 TCP/UDP 網關,並且我想動態打開和關閉很多端口。

下面是詳細過程:

  • 我們有一個正在運行的容器(containerA),它在端口 8080 上接受傳入的 TCP 連接
  • 我們有一個 ip 為 1.1.1.1 的負載均衡器,端口 9091 指向 nginx 入口
  • Nginx Ingress 將使用 TCP configmap 管理負載均衡器和容器 A 之間的連接
  • 負載均衡器 1.1.1.1:9091 -> nginx tcp 流 9091 -> 后端 containerA 端口 8080
  • 當一個新的客戶端到來時,我們將提供一個新的容器(containerB),但具有相同的端口 8080
  • 我們將向負載均衡器添加一個新端口(端口 9092)
  • 負載均衡器 1.1.1.1:9092 -> nginx tcp 流 9092 -> 后端 containerB 端口 8080
  • 重復為新客戶端添加端口

TCP 連接的 nginx 入口配置圖如下所示:

apiVersion: v1
data:
  "9091": default/php-apache1:8080
  "9092": default/php-apache2:8080
  "9093": default/php-apache3:8080
  "9094": default/php-apache4:8080
kind: ConfigMap

摘自 Nginx 入口部署 yaml:

        ports:
        - containerPort: 9091
          hostPort: 9091
          name: 9091-tcp
          protocol: TCP
        - containerPort: 9092
          hostPort: 9092
          name: 9092-tcp
          protocol: TCP

我能夠打開特定的 TCP/UDP 端口,一切正常,但現在我有兩個難題:

  • 將所有端口一一添加到yaml文件中,效率低下,難以管理
  • 通過修改部署 yaml 文件添加新端口(例如 TCP/9091)會導致現有 pod 重新啟動。 當不時添加新端口時,這種行為是不可取的

根據我的觀察,在向 nginx tcp configmap 添加新端口時,更改會成功重新加載,並且無需重新啟動即可打開端口。 問題是,除非您修改端口並將其添加到部署 yaml,否則端口尚未正確路由,這反過來會導致 pod 重新啟動。

我的問題是

  1. 是否可以僅添加路由規則以便 nginx pod 不必重新啟動?

  2. 是否可以將來自負載均衡器的所有端口直接路由到 Azure Kubernetes 服務下的 NGINX 入口

  3. 針對我的用例的其他建議

除非我讀錯了這個問題(本質上)是:是否可以在不重新啟動 pod 的情況下編輯部署?

答案是不。 如果您需要編輯部署 - 它將重新啟動 pod。

但我看不出問題出在哪里,它們並沒有同時重新啟動。 應該沒有性能下降

暫無
暫無

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

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