簡體   English   中英

kubernetes - 將入口流量路由到某些路徑的特定 pod

[英]kubernetes - route ingress traffic to specific pod for some paths

我有多個 pod,它們會自動放大和縮小。

我正在使用入口作為入口點。 我需要根據某些條件(比如說路徑)將外部流量路由到特定的 pod。 在提出請求時,我確信特定的 pod 已啟動。

例如,假設我有域 someTest.com,通常將流量路由到 pod 1、2 和 3(假設我通過內部 ips 識別它們 - 192.168.1.10、192.168.1.11 和 192.168.1.13)。

當我調用 someTest.com/specialRequest/12 時,我需要將流量路由到 192.168.1.12,當我調用 someTest.com/specialRequest/13 時,我想將流量路由到 192.168.1.13。 對於正常情況(someTest.com/normalRequest),我只想讓 lb 正常完成他的史詩般的工作。

如果 pod 擴大並出現 192.168.1.14,我需要能夠調用 someTest.com/specialRequest/14 並被路由到提到的 pod。

無論如何我可以做到這一點嗎?

是的,您可以使用 Kubernetes Ingress 輕松實現此目的。 這是一個可能有幫助的示例代碼:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  spec:
    rules:
    - host: YourHostName.com
      http:
        paths:
        - path: /
          backend:
            serviceName: Service1
            servicePort: 8000
        - path: /api
          backend:
            serviceName: Service2
            servicePort: 8080
        - path: /admin
          backend:
            serviceName: Service3
            servicePort: 80

請注意,入口規則有 serviceNames 而不是 pod 名稱,因此您必須為您的 pod 創建服務。 這是一個將 nginx 公開為 Kubernetes 中的服務的服務示例:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    io.kompose.service: nginx
spec:
  ports:
  - name: "80"
    port: 80
    targetPort: 80
  selector:
    io.kompose.service: nginx

我不知道實現此功能的內置功能(如果這是您真正想要的)。 您可以通過為 Kubernetes 構建自己的運算符來實現此目的。 您的操作員可能會配置一個 Pod+Ingress 組合,這將完全按照您的要求進行 - 將您的流量轉發到一個 pod,或者您可以配置 2 個 pod 和 1 個入口以實現 HA 設置。

根據您使用的 Ingress,也可以將多個 Ingress 資源分組在同一個負載均衡器下。

這是一個簡短的圖表,說明它的外觀。 示例運算符

創建另一個可以通過命名約定中的模式直接獲取路徑並以 pod 為目標的應用程序是否可行? 例如

${podnamePrefix+param}.${服務名稱}.${命名空間}.svc.cluster.local

暫無
暫無

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

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