為 Amazon EKS 叢集建立 VPC - Amazon EKS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為 Amazon EKS 叢集建立 VPC

您可使用 Amazon Virtual Private Cloud (Amazon VPC) 將 AWS 資源啟動到您定義的虛擬網路。此虛擬網路非常近似於您在自有資料中心內運作的傳統網路。但是,它帶來了使用 Amazon Web 服務的可擴展基礎架構的好處。部署生產 Amazon EKS 叢集前,建議您完整了解 Amazon VPC 服務。如需詳細資訊,請參閱 Amazon VPC 使用者指南

Amazon EKS 叢集、節點和 Kubernetes 資源已部署至 VPC。如果您要將現有的 VPC 與 Amazon EKS 結合使用,則該 VPC 必須符合 Amazon EKS VPC 與子網要求和注意事項 中描述的要求。本主題介紹如何使用 Amazon EKS 提供的 AWS CloudFormation 範本建立符合 Amazon EKS 要求的 VPC。部署範本後,您可以檢視範本所建立的資源,以確切了解其建立的資源以及這些資源的組態。

先決條件

若要為 Amazon EKS 建立 VPC,您必須擁有建立 Amazon VPC 資源所需的 IAM 許可。這些資源包括 VPC、子網、安全群組、路由表和路由,以及網際網路和 NAT 閘道。如需詳細資訊,請參閱 《Amazon VPC 使用者指南》中的使用公有子網範例政策建立 VPC,以及服務授權參考中的 Amazon EC2 的動作、資源與條件金鑰的完整清單。

您可以建立含公有和私有子網路、僅公有子網路或僅私有子網路的 VPC。

Public and private subnets

此 VPC 具有兩個公用和兩個私有子網路。公有子網路與具有網際網路閘道路由的路由表相關聯。不過,私有子網的關聯路由表沒有連至網際網路閘道的路由。一個公有子網路和一個私有子網路會部署到相同的可用區域。其他公有和私有子網路會部署到相同 AWS 區域 中的第二個可用區域。我們建議大多數部署使用此選項。

使用此選項,您可以將節點部署到私有子網。此選項可讓 Kubernetes 將負載平衡器部署至公有子網路,以便將流量負載平衡至私有子網路中節點上執行的 Pods。公有 IPv4 地址會自動指派給部署到公有子網路的節點,但公有 IPv4 地址不會指派給部署到私有子網路的節點。

您可以將 IPv6 地址指派給公有和私有子網路中的節點。私有子網路中的節點可以與叢集和其他 AWS 服務 通訊。Pods 可以透過部署在每個可用區域中的 NAT 閘道 (使用 IPv4 地址) 或僅限傳出之網際網路閘道 (使用 IPv6 地址) 與網際網路通訊。部署的安全群組包含拒絕來自叢集或節點之外的來源的所有傳入流量,但卻允許所有傳出流量的規則。子網路會加上標籤,以讓 Kubernetes 能夠將負載平衡器部署至其中。

建立您的 VPC
  1. 造訪網址 https://console.aws.amazon.com/cloudformation以開啟 AWS CloudFormation 主控台:

  2. 從導覽列中,選取支援 Amazon EKS 的 AWS 區域。

  3. 選擇 Create stack (建立堆疊)With new resources (standard) (使用新資源 (標準))

  4. Prerequisite - Prepare template (必要條件 - 準備範本) 下,請確定選擇 Template is ready (範本已就緒),然後在 Specify template (指定範本) 下選取 Amazon S3 URL

  5. 您可以建立僅支援 IPv4 的 VPC,或支援 IPv4IPv6 的 VPC。將下列 URL 之一Amazon S3 URL 下的文字區域並選擇 Next (下一步):

    • IPv4

      https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
    • IPv4IPv6

      https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml
  6. Specify stack details (識別堆疊詳細資訊) 頁面上,輸入參數,然後選擇 Next (下一步)。

    • Stack name:為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如,您可以使用在先前步驟中使用的範本名稱。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以字母字元開頭,且長度不可超過 100 個字元。

    • VpcBlock:為您的 VPC 選擇一個 IPv4 CIDR 範圍。您部署的每個節點、Pod 和負載平衡器都會從此區塊指派一個 IPv4 地址。預設 IPv4 值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的 VPC 和子網路規模調整。您也可以在 VPC 建立後將其他 CIDR 區塊新增至 VPC。如果您正在建立 IPv6 VPC,則會從 Amazon 的全域單播傳送地址空間自動為您指派 IPv6 CIDR 範圍。

    • PublicSubnet01 區塊:為公用子網路 1 指定 IPv4 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。如果建立 IPv6 VPC,則系統會在範本中為您指定此區塊。

    • PublicSubnet02 區塊:為公用子網路 2 指定 IPv4 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。如果建立 IPv6 VPC,則系統會在範本中為您指定此區塊。

    • PrivateSubnet01 區塊:為私有子網路 1 指定 IPv4 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。如果建立 IPv6 VPC,則系統會在範本中為您指定此區塊。

    • PrivateSubnet02 區塊:為私有子網路 2 指定 IPv4 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。如果建立 IPv6 VPC,則系統會在範本中為您指定此區塊。

  7. (選用) 在 Configure stack options (設定堆疊選項) 頁面上,為堆疊資源加上標籤,然後選擇 Next (下一步)。

  8. Review (檢閱) 頁面上,選擇 Create stack (建立堆疊)。

  9. 堆疊建立後,從主控台將其選取,然後選擇 Outputs (輸出)

  10. 記錄VpcId已建立的 VPC。建立叢集和節點時,您需要此值。

  11. 記錄已建立SubnetIds的子網路,以及您是否將它們建立為公用子網路或私用子網路。建立叢集和節點時,您至少需要其中兩個。

  12. 如果您建立了 IPv4 VPC,請跳過此步驟。如果建立 IPv6 VPC,則必須為範本建立的公有子網路啟用自動指派 IPv6 地址選項。已為私有子網路啟用該設定。若要啟用此設定,請完成下列步驟:

    1. 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

    2. 在左側導覽窗格中,選擇 Subnets (子網路)。

    3. 選取其中一個公用子網路 (堆疊名稱/SubnetPublic01 或堆疊名稱/SubnetPublic02 包含用字),然後選擇 [動作]、[編輯子網路設定]。

    4. 勾選啟用自動指派 IPv6 地址核取方塊,然後選擇儲存

    5. 為您的其他公有子網路再次完成上述步驟。

Only public subnets

此 VPC 有三個公有子網路,這些子網路已部署到 AWS 區域 中的不同可用區域。所有節點都會自動指派公有 IPv4 地址,並且可以透過網際網路閘道傳送和接收網際網路流量。部署的安全群組會拒絕所有輸入流量,並允許所有輸出流量。子網路會加上標籤,以讓 Kubernetes 能夠將負載平衡器部署至其中。

建立您的 VPC
  1. 造訪網址 https://console.aws.amazon.com/cloudformation以開啟 AWS CloudFormation 主控台:

  2. 從導覽列中,選取支援 Amazon EKS 的 AWS 區域。

  3. 選擇 Create stack (建立堆疊)With new resources (standard) (使用新資源 (標準))

  4. Prepare template (準備範本) 下,請確定 Template is ready (範本已就緒),然後在 Template source (範本來源) 下選取 Amazon S3 URL

  5. 將下列 URL 貼入 Amazon S3 URL 下的文字區域並選擇 Next (下一步):

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
  6. Specify Details (指定詳細資訊) 頁面上,輸入參數,然後選擇 Next (下一步)。

    • Stack name:為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如,您可以稱它為 amazon-eks-vpc-sample。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以字母字元開頭,且長度不可超過 100 個字元。

    • VpcBlock:為您的虛擬私人雲端選擇一個 CIDR 區塊。您部署的每個節點、Pod 和負載平衡器都會從此區塊指派一個 IPv4 地址。預設 IPv4 值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的 VPC 和子網路規模調整。您也可以在 VPC 建立後將其他 CIDR 區塊新增至 VPC。

    • Subnet01Block:指定適用於子網路 1 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。

    • Subnet02Block:指定適用於子網路 2 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。

    • Subnet03Block:指定適用於子網路 3 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。

  7. (選用) 在 Options (選項) 頁面上,為堆疊資源加上標籤。選擇下一步

  8. Review (檢閱) 頁面上,選擇 Create (建立)。

  9. 堆疊建立後,從主控台將其選取,然後選擇 Outputs (輸出)

  10. 記錄VpcId已建立的 VPC。建立叢集和節點時,您需要此值。

  11. 記錄已SubnetIds建立之子網路的。建立叢集和節點時,您至少需要其中兩個。

  12. (選用) 叢集部署到此 VPC 的任何叢集都能夠為您的 Pods 和 services 指派私有 IPv4 地址。如果要將叢集部署到此 VPC,以指派私有 IPv6 地址給您的 Pods 和 services,則必須對 VPC、子網路、路由表和安全群組進行更新。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的IPv4 中現有的 VPC 遷移至 IPv6。Amazon EKS 要求您的子網路啟用 Auto-assign IPv6 地址選項。預設為停用狀態。

Only private subnets

此 VPC 有三個私有子網路,這些子網路部署到 AWS 區域 中不同的可用區域。部署到子網的資源無法存取網際網路,網際網路也無法存取子網中的資源。範本會使用 AWS PrivateLink 為節點通常需要存取的幾個 AWS 服務 建立 VPC 端點。如果您的節點需要傳出網際網路存取權,您可以在建立 VPC 後的每個子網的可用區域中新增公有 NAT 閘道。建立的安全群組會拒絕所有傳入流量,部署到子網中的資源除外。安全群組亦允許所有傳出流量。子網路會加上標籤,以讓 Kubernetes 能夠將內部負載平衡器部署至其中。如果您使用此組態來建立 VPC,請參閱 私有叢集要求 了解其他要求和注意事項。

建立您的 VPC
  1. 造訪網址 https://console.aws.amazon.com/cloudformation以開啟 AWS CloudFormation 主控台:

  2. 從導覽列中,選取支援 Amazon EKS 的 AWS 區域。

  3. 選擇 Create stack (建立堆疊)With new resources (standard) (使用新資源 (標準))

  4. Prepare template (準備範本) 下,請確定 Template is ready (範本已就緒),然後在 Template source (範本來源) 下選取 Amazon S3 URL

  5. 將下列 URL 貼入 Amazon S3 URL 下的文字區域並選擇 Next (下一步):

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
  6. Specify Details (指定詳細資訊) 頁面上,輸入參數,然後選擇 Next (下一步)。

    • Stack name:為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如,您可以稱它為 amazon-eks-fully-private-vpc。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以字母字元開頭,且長度不可超過 100 個字元。

    • VpcBlock:為您的虛擬私人雲端選擇一個 CIDR 區塊。您部署的每個節點、Pod 和負載平衡器都會從此區塊指派一個 IPv4 地址。預設 IPv4 值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的 VPC 和子網路規模調整。您也可以在 VPC 建立後將其他 CIDR 區塊新增至 VPC。

    • PrivateSubnet01 區塊:指定子網路 1 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。

    • PrivateSubnet02 區塊:指定子網路 2 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。

    • PrivateSubnet03 區塊:指定子網路 3 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 地址,但如果沒有,則可以進行變更。

  7. (選用) 在 Options (選項) 頁面上,為堆疊資源加上標籤。選擇下一步

  8. Review (檢閱) 頁面上,選擇 Create (建立)。

  9. 堆疊建立後,從主控台將其選取,然後選擇 Outputs (輸出)

  10. 記錄VpcId已建立的 VPC。建立叢集和節點時,您需要此值。

  11. 記錄已SubnetIds建立之子網路的。建立叢集和節點時,您至少需要其中兩個。

  12. (選用) 叢集部署到此 VPC 的任何叢集都能夠為您的 Pods 和 services 指派私有 IPv4 地址。如果要將叢集部署到此 VPC,以指派私有 IPv6 地址給您的 Pods 和 services,則必須對 VPC、子網路、路由表和安全群組進行更新。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的IPv4 中現有的 VPC 遷移至 IPv6。Amazon EKS 要求您的子網路啟用 Auto-assign IPv6 地址選項 (預設情況下處於停用狀態)。