

 **協助改進此頁面** 

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

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

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

# 建立 Amazon VPC CNI (Amazon EKS 附加元件)
<a name="vpc-add-on-create"></a>

使用下面的步驟，來建立適用於 Kubernetes Amazon EKS 附加元件的 Amazon VPC CNI 外掛程式。

請檢閱考量之後再開始。如需詳細資訊，請參閱[考量事項](managing-vpc-cni.md#manage-vpc-cni-add-on-on-considerations)。

## 先決條件
<a name="vpc-add-on-create-prerequisites"></a>

下面說明了適用於 Kubernetes Amazon EKS 附加元件的 Amazon VPC CNI 外掛程式的先決條件。
+ 現有 Amazon EKS 叢集。若要部署叢集，請參閱 [開始使用 Amazon EKS](getting-started.md)。
+ 叢集的現有 AWS Identity and Access Management (IAM) OpenID Connect (OIDC) 提供者。若要判定您是否已經擁有一個，或是要建立一個，請參閱 [為您的叢集建立 IAM OIDC 身分提供者](enable-iam-roles-for-service-accounts.md)。
+ 連接有 [AmazonEKS\_CNI\_Policy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKS_CNI_Policy.html) IAM 政策 (如果您的叢集使用 `IPv4` 系列) 或 IPv6 政策 (如果您的叢集使用 `IPv6` 系列) 的 IAM 角色。若要了解 VPC CNI 角色的相關詳細資訊，請參閱 [設定 Amazon VPC CNI 外掛程式以使用 IRSA](cni-iam-role.md)。若要了解 IPv6 政策的相關詳細資訊，請參閱 [為使用 `IPv6` 系列的叢集建立 IAM 政策](cni-iam-role.md#cni-iam-role-create-ipv6-policy)。

**重要**  
藉助適用於 Kubernetes 版本的 Amazon VPC CNI 外掛程式 `v1.16.0` 至 `v1.16.1` 來實作 CNI 規範版本 `v1.0.0`。若要了解 CNI 規範 `v1.0.0` 的相關詳細資訊，請參閱 GitHub 上的[容器網路介面 (CNI) 規範](https://github.com/containernetworking/cni/blob/spec-v1.0.0/SPEC.md)。

## 程序
<a name="vpc-add-on-create-procedure"></a>

完成先決條件之後，使用下面的步驟來建立附加元件。

1. 查看叢集上目前安裝了哪些附加元件版本。

   ```
   kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
   ```

   範例輸出如下。

   ```
   v1.16.4-eksbuild.2
   ```

1. 查看叢集上安裝的附加元件類型。視您用來建立叢集的工具而定，您的叢集上目前可能沒有安裝 Amazon EKS 附加元件類型。使用您叢集的名稱取代 {{my-cluster}}。

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text
   ```

   如果傳回版本編號，則表明已在叢集上安裝 Amazon EKS 類型的附加元件，並且無需完成此程序中的剩餘步驟。如果傳回錯誤，則表明沒有在叢集上安裝 Amazon EKS 類型的附加元件。完成此程序的剩餘步驟以安裝該類型。

1. 儲存您目前安裝的附加元件。

   ```
   kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
   ```

1. 使用 CLI AWS 建立附加元件。如果您想要使用 AWS 管理主控台 或 `eksctl` 建立附加元件，請參閱 [建立 Amazon EKS 附加元件](creating-an-add-on.md)並`vpc-cni`指定附加元件名稱。將隨後的命令複製到您的裝置。視需要對命令進行下列修改，然後執行修改後的命令。
   + 使用您叢集的名稱取代 {{my-cluster}}。
   + 將 {{v1.20.3-eksbuild.1}} 取代為叢集版本最新版本資料表中列出的最新版本。若要查看最新版本資料表，請參閱 [Amazon VPC CNI 版本](managing-vpc-cni.md#vpc-cni-latest-available-version)。
   + 使用帳戶 ID 取代 {{111122223333}}，並且使用所建立[現有 IAM 角色](cni-iam-role.md#cni-iam-role-create-role)的名稱取代 {{AmazonEKSVPCCNIRole}}。若要指定角色，您的叢集需要具有 IAM OpenID Connect (OIDC) 提供者。若要判定您的叢集是否已經擁有一個提供者，或是要建立一個提供者，請參閱 [為您的叢集建立 IAM OIDC 身分提供者](enable-iam-roles-for-service-accounts.md)。

     ```
     aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.20.3-eksbuild.1 \
         --service-account-role-arn arn:aws: iam::111122223333:role/AmazonEKSVPCCNIRole
     ```

     如果您已將自訂設定套用至與 Amazon EKS 附加元件的預設設定衝突的目前附加元件，建立動作可能會失敗。若建立失敗，您會收到錯誤，其中的訊息有助於您解決問題。或者，您可以將 `--resolve-conflicts OVERWRITE` 新增至上一條命令。這可讓附加元件覆寫任何現有的自訂設定。建立附加元件後，可使用自訂設定來更新該附加元件。

1. 確認叢集 Kubernetes 版本的附加元件的最新版本已新增至叢集。使用您叢集的名稱取代 {{my-cluster}}。

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text
   ```

   建立附加元件的動作可能需要幾秒鐘的時間才能完成。

   範例輸出如下。

   ```
   v1.20.3-eksbuild.1
   ```

1. 如果您對原始附加元件制定自訂設定，請在建立 Amazon EKS 附加元件之前，使用在上一步中儲存的組態，以您的自訂設定更新 EKS 附加元件。請遵循 [更新 Amazon VPC CNI (Amazon EKS 附件元件)](vpc-add-on-update.md) 中的步驟。

1. (選用) 安裝 `cni-metrics-helper` 到您的叢集。它湊集彈性網路介面和 IP 地址資訊，匯總叢集層級的指標，並將指標發佈至 Amazon CloudWatch。如需詳細資訊，請參閱 GitHub 上的 [cni-metrics-helper](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/cmd/cni-metrics-helper/README.md)。