簡體   English   中英

EKS Kubernetes 出站流量

[英]EKS Kubernetes outbound traffic

我最近在 AWS 中為我公司的新項目設置了一個 EKS 集群。 在我進入我的問題之前,這里是我的設置的一些信息。 節點組中有兩個節點(目前)具有自動縮放功能。 起初,我在私有子網中創建了節點,因為我認為它更安全。 但是我的主管告訴我,我們需要將 SSH 直接連接到節點的能力,所以我在公共子網中重新創建了節點,以便我們可以使用公鑰 SSH 到節點。

我們在 AWS(例如 aws.example.com)和 DigitalOcean(例如 do.example.com)中有兩個 CMS 實例,其中包含一些數據。 當 EKS 集群中的容器啟動時,其中一些容器需要使用 url aws.example.com 或 do.example.com 訪問 AWS 中的實例。 如果 EKS 中的容器無法訪問實例,容器仍會運行,但其中的應用程序不會。 因此,我需要將兩個 CMS 實例上所有 EKS 節點的公共 IP 列入白名單,以便應用程序正常工作。 它有效。

我在我的 EKS 集群中使用入口。 當我創建入口 object 時,AWS 為我創建了一個應用程序負載均衡器。 所有入站流量都由 ALB 處理,這很棒。 但問題來了。 當創建更多容器時,自動擴展會在我的 EKS 集群中啟動新節點(每次都有不同的公共 IP),然后我必須將 go 到兩個 CMS 實例以將新的公共 ZA12A3079E14CEDB26EAZBA9 地址列入白名單。

那么,有什么方法可以讓所有節點都使用一個固定的 IP 地址進行出站流量? 或者也許將它們配置為將入口創建的 ALB 也用於出站流量? 或者我需要創建一個服務器來做到這一點? 我現在很迷茫。

這是我嘗試過的:創建集群時,它似乎也創建了一個私有子網,即使我指定了要在公共子網中創建的節點。 為私有子網創建了一個 nat-gateway (ngw-xxxxxx),它帶有一個彈性 IP(例如 1.2.3.4)。 公共子網的路由表如下: 192.168.0.0/16 local 0.0.0.0/0 igw-xxxxxx

所以我想通過將igw-xxxxxx更改為ngw-xxxxxx,所有出站流量都將使用ngw-xxxxxx並使用IP地址1.2.3.4將流量發送到外界,我只需要將1.2.3.4列入我的兩個白名單CMS 實例。 但在我應用更改后,所有容器都被終止,所有東西都停止工作。

確切地說,正如上面評論中提到的@Marcin。 您應該將您的node-group移動到private subnet

私有子網

正如文檔所說:

對必須連接到 Internet 的資源使用公共子網,對不會連接到 Internet 的資源使用私有子網

private subnet的想法是禁止直接從互聯網訪問內部資源。

您可以在此處閱讀 AWS 文檔的非常好的部分: https://docs.aws.amazon.com/vpc/latest/userguide/how-it-works.html

對於private subnet ,您需要通過Route Table中的Nat gateway設置傳出流量(在此處閱讀: https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html )。

公共子網

如果您出於某些原因需要在public subnet中使用您的集群,但這是錯誤的做法,您可以這樣做:

您只能通過Nat Gateways將流量從public subnet由到特定服務器(您的 CMS)。

您的public subnet route table可能如下所示:

目的地 目標
10.0.0.0/16 當地的
WXYZ/32 nat 網關 id
0.0.0.0/0 igw-id

其中WXYZ/32是您的 CMS IP 地址。


一些提示

此外,好的做法是分配一個EIP pool並將它們附加到NAT Gateway ,以確保將來不會更改。

當您想修改基礎設施並創建more complicated Nat (例如,您想在layer 7過濾流量)時,您可以創建High Availability Nat instances ,並將 IP 附加到NAT instances而不是NAT Gateways

在這種情況下,您將避免郵寄一些 3-rd 方 API 來將您的新 IP 列入白名單。

暫無
暫無

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

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