[英]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.