

 **協助改進此頁面** 

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

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

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

# 為您的 Amazon EKS 叢集建立 Amazon VPC
<a name="creating-a-vpc"></a>

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

Amazon EKS 叢集、節點和 Kubernetes 資源已部署到 VPC。如果您要將現有的 VPC 與 Amazon EKS 結合使用，則該 VPC 必須符合 [檢視 VPC 和子網路的 Amazon EKS 聯網需求](network-reqs.md) 中描述的要求。本主題說明如何使用 Amazon EKS provided AWS CloudFormation 範本建立符合 Amazon EKS 要求的 VPC。部署範本後，您可以檢視範本所建立的資源，以確切了解其建立的資源以及這些資源的組態。如果您使用混合節點，您的 VPC 必須在其路由表中包含用於內部部署網路的路由。有關混合節點的網路需求詳細資訊，請參閱 [準備混合節點的聯網](hybrid-nodes-networking.md)。

## 先決條件
<a name="_prerequisites"></a>

若要為 Amazon EKS 建立 VPC，您必須擁有建立 Amazon VPC 資源所需的 IAM 許可。這些資源包括 VPC、子網、安全群組、路由表和路由，以及網際網路和 NAT 閘道。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的[使用公有子網路範例政策建立 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-policy-examples.html#vpc-public-subnet-iam)，以及[服務授權參考](https://docs.aws.amazon.com/service-authorization/latest/reference/reference.html)中的[動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)的完整清單。

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

## 公有和私有子網路
<a name="_public_and_private_subnets"></a>

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

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

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

1. 開啟 [AWS CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/)。

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

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

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

1. 您可以建立僅支援 `IPv4` 的 VPC，或支援 `IPv4` 和 `IPv6` 的 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
```
+  `IPv4` 和 `IPv6` 

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

1. 在 **Specify stack details** (識別堆疊詳細資訊) 頁面上，輸入參數，然後選擇 **Next** (下一步)。
   +  **堆疊名稱**：為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如，您可以使用在先前步驟中使用的範本名稱。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭，且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。
   +  **VpcBlock**：選擇適用於您 VPC 的 `IPv4` CIDR 範圍。您部署的每個節點、Pod 和負載平衡器都會從此區塊指派一個 `IPv4` 位址。預設 `IPv4` 值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的 [VPC 和子網路規模調整](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing)。您也可以在 VPC 建立後將其他 CIDR 區塊新增至 VPC。如果您正在建立 `IPv6` VPC，則會從 Amazon 的全域單點傳送位址空間自動為您指派 `IPv6` CIDR 範圍。
   +  **PublicSubnet01Block**：指定適用於公有子網路 1 的 `IPv4` CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。如果建立 `IPv6` VPC，則會在範本中為您指定此區塊。
   +  **PublicSubnet02Block**：指定適用於公有子網路 2 的 `IPv4` CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。如果建立 `IPv6` VPC，則會在範本中為您指定此區塊。
   +  **PrivateSubnet01Block**：指定適用於私有子網路 1 的 `IPv4` CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。如果建立 `IPv6` VPC，則會在範本中為您指定此區塊。
   +  **PrivateSubnet02Block**：指定適用於私有子網路 2 的 `IPv4` CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。如果建立 `IPv6` VPC，則會在範本中為您指定此區塊。

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

1. 在 **Review** (檢閱) 頁面上，選擇 **Create stack** (建立堆疊)。

1. 堆疊建立後，從主控台將其選取，然後選擇 **Outputs (輸出)**。

1. 為已建立的 VPC 記錄 **VpcId**。建立叢集和節點時，您需要此值。

1. 記錄已建立的子網路的 **SubnetIds (子網路識別碼)**，以及您是否將它們建立為公有或私有子網路的子網路。建立叢集和節點時，您至少需要其中兩個。

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

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 在左側導覽窗格中，選擇 **Subnets** (子網路)。

   1. 選擇一個公有子網路 (***stack-name*/SubnetPublic01** 或 ***stack-name*/SubnetPublic02**，其中包含文字 **public**)，然後選擇**動作**、**編輯子網路設定**。

   1. 勾選 **Enable auto-assign IPv6 address** (啟用自動指派 IPv6 地址) 核取方塊，然後選擇 **Save** (儲存)。

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

## 僅公有子網路
<a name="_only_public_subnets"></a>

此 VPC 有三個公有子網路，部署到 AWS 區域中的不同可用區域。所有節點都會自動指派公有 `IPv4` 地址，並且可以透過[網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)傳送和接收網際網路流量。部署的[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)會拒絕所有輸入流量，並允許所有輸出流量。子網路會加上標籤，以便 Kubernetes 可以將負載平衡器部署到它們。

1. 開啟 [AWS CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/)。

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

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

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

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

```
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
```

1. 在 **Specify Details** (指定詳細資訊) 頁面上，輸入參數，然後選擇 ** Next** (下一步)。
   +  **堆疊名稱**：為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如，您可以稱它為 *amazon-eks-vpc-sample*。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭，且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。
   +  **VpcBlock**：選擇適用於您 VPC 的 CIDR 區塊。您部署的每個節點、Pod 和負載平衡器都會從此區塊指派一個 `IPv4` 位址。預設 `IPv4` 值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的 [VPC 和子網路規模調整](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing)。您也可以在 VPC 建立後將其他 CIDR 區塊新增至 VPC。
   +  **Subnet01Block**：指定適用於子網路 1 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。
   +  **Subnet02Block**：指定適用於子網路 2 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。
   +  **Subnet03Block**：指定適用於子網路 3 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。

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

1. 在 **Review** (檢閱) 頁面上，選擇 **Create** (建立)。

1. 堆疊建立後，從主控台將其選取，然後選擇 **Outputs (輸出)**。

1. 為已建立的 VPC 記錄 **VpcId**。建立叢集和節點時，您需要此值。

1. 為已建立的子網路記錄 **SubnetIds**。建立叢集和節點時，您至少需要其中兩個。

1. (選用) 叢集部署到此 VPC 的任何叢集都能夠為您的 Pod 和服務指派私有 `IPv4` 位址。如果要將叢集部署到此 VPC，以指派私有 `IPv6` 位址給您的 Pod 和 服務，則必須對 VPC、子網路、路由表和安全群組進行更新。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的[將IPv4 中現有的VPC 遷移至IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)。Amazon EKS 要求您的子網路啟用 `Auto-assign` `IPv6` 地址選項。預設為停用狀態。

## 一個私有子網路
<a name="_only_private_subnets"></a>

此 VPC 有三個私有子網路，部署到 AWS 區域中的不同可用區域。部署到子網路的資源無法存取網際網路，網際網路也無法存取子網路中的資源。範本會使用 AWS PrivateLink 為節點通常需要存取的多項 AWS 服務建立 [VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)。如果您的節點需要傳出網際網路存取權，您可以在建立 VPC 後的每個子網的可用區域中新增公有 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。建立的[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)會拒絕所有傳入流量，部署到子網中的資源除外。安全群組亦允許所有傳出流量。子網路會加上標籤，以便 Kubernetes 可以對它們部署負載平衡器。如果您使用此組態來建立 VPC，請參閱 [部署網際網路存取受到限制的私有叢集](private-clusters.md) 了解其他要求和注意事項。

1. 開啟 [AWS CloudFormation 主控台](https://console.aws.amazon.com/cloudformation/)。

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

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

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

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

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

1. 在 **Specify Details** (指定詳細資訊) 頁面上，輸入參數，然後選擇 ** Next** (下一步)。
   +  **堆疊名稱**：為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如，您可以稱它為 *amazon-eks-fully-private-vpc*。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭，且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。
   +  **VpcBlock**：選擇適用於您 VPC 的 CIDR 區塊。您部署的每個節點、Pod 和負載平衡器都會從此區塊指派一個 `IPv4` 位址。預設 `IPv4` 值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的 [VPC 和子網路規模調整](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#VPC_Sizing)。您也可以在 VPC 建立後將其他 CIDR 區塊新增至 VPC。
   +  **PrivateSubnet01Block**：指定適用於子網路 1 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。
   +  **PrivateSubnet02Block**：指定適用於子網路 2 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。
   +  **PrivateSubnet03Block**：指定適用於子網路 3 的 CIDR 區塊。預設值為大多數實作提供足夠的 IP 位址，但如果沒有，則可以進行變更。

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

1. 在 **Review** (檢閱) 頁面上，選擇 **Create** (建立)。

1. 堆疊建立後，從主控台將其選取，然後選擇 **Outputs (輸出)**。

1. 為已建立的 VPC 記錄 **VpcId**。建立叢集和節點時，您需要此值。

1. 為已建立的子網路記錄 **SubnetIds**。建立叢集和節點時，您至少需要其中兩個。

1. (選用) 叢集部署到此 VPC 的任何叢集都能夠為您的 Pod 和服務指派私有 `IPv4` 位址。如果要將叢集部署到此 VPC，以指派私有 `IPv6` 位址給您的 Pod 和 服務，則必須對 VPC、子網路、路由表和安全群組進行更新。如需詳細資訊，請參閱《Amazon VPC 使用者指南》中的[將IPv4 中現有的VPC 遷移至IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)。Amazon EKS 要求您的子網路啟用 `Auto-assign IPv6` 位址選項 (預設情況下處於停用狀態)。