注意:我嘗試包含螢屏截圖,但 stackoverflow 不允許我添加帶有預覽的影像,因此我將它們作為鏈接包含在內。
我使用 kOps 在 AWS 上部署了一個 Web 應用程式。我有兩個節點并設定了一個網路負載均衡器。
NLB 的目標組有兩個節點(每個節點都是由同一個模板制作的一個實體)。
檢查 ingress-nginx-controller 日志后,負載均衡器實際上似乎正在作業。請求正在正確地分布在 pod 上。我可以通過入口外部地址訪問該服務。但是當我去 AWS 控制臺/目標組時,兩個節點之一被標記為,我對此很擔心。
節點運行正常。

我嘗試將 sh 執行到 nginx-controller 中,并嘗試使用它們的內部 IP 地址 curl 到兩個節點。對于健康節點,我得到 nginx 回應,對于不健康節點,它超時。我不知道 nginx 是如何安裝在其中一個節點上而不是另一個節點上的。
有人可以告訴我可能的原因嗎?
uj5u.com熱心網友回復:
我之前遇到過完全相同的問題,這應該記錄在 AWS 或 Kubernetes 的某個地方。答案是從AWS Premium Support復制的
簡短的介紹
NGINX 入口控制器將spec.externalTrafficPolicy選項設定Local為保留客戶端 IP。此外,請求不會路由到不健康的作業節點。以下故障排除意味著您不需要維護集群 IP 地址或保留客戶端 IP 地址。
決議度
如果您檢查入口控制器服務,您將看到該External Traffic Policy欄位設定為Local.
$ kubectl -n ingress-nginx describe svc ingress-nginx-controller
Output:
Name: ingress-nginx-controller
Namespace: ingress-nginx
...
External Traffic Policy: Local
...
此本地設定丟棄發送到未運行 NGINX 入口控制器實體的 Kubernetes 節點的資料包。將 NGINX pod(來自 Kubernetes 網站)分配給要在其上安排 NGINX 入口控制器的節點。
將 pec.externalTrafficPolicy 選項更新為Cluster
$ kubectl -n ingress-nginx patch service ingress-nginx-controller -p '{"spec":{"externalTrafficPolicy":"Cluster"}}'
Output:
service/ingress-nginx-controller patched
默認情況下,NodePort 服務執行源地址轉換(來自 Kubernetes 網站)。對于 NGINX,這意味著 HTTP 請求的源 IP 始終是接收請求的 Kubernetes 節點的 IP 地址。如果將 NodePort 設定為 Ingress-nginx 服務規范中的 externalTrafficPolicy 欄位的值,則無法維護源 IP 地址。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/497062.html
標籤:亚马逊网络服务 Kubernetes 亚马逊-eks 考普斯
