

 **協助改進此頁面** 

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

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

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

# 為您的叢集開始使用 AWS Fargate
<a name="fargate-getting-started"></a>

本主題說明如何開始使用 Amazon EKS 叢集在 AWS Fargate 上執行 Pod。

如果使用 CIDR 區塊限制對叢集公有端點的存取，則建議您也啟用私有端點存取。這樣一來，Fargate Pod 即可與叢集通訊。若不啟用私有端點，您指定用於公有存取的 CIDR 區塊必須包含來自 VPC 的傳出來源。如需詳細資訊，請參閱[叢集 API 伺服器端點](cluster-endpoint.md)。

**先決條件**  
現有的叢集。如果還沒有 Amazon EKS 叢集，請參閱 [開始使用 Amazon EKS](getting-started.md)。

## 步驟 1：確認現有節點可以與 Fargate Pod 進行通訊
<a name="fargate-gs-check-compatibility"></a>

如果正在使用無節點的新叢集，或叢集只有受管節點群組 (請參閱 [透過受管節點群組來簡化節點生命週期](managed-node-groups.md))，您可以跳至 [步驟 2：建立 Fargate Pod 執行角色](#fargate-sg-pod-execution-role)。

假設您正在使用的現有叢集已經具有與其相關聯的節點。請確保在這些節點上的 Pod 可以自由地與在 Fargate 上執行的 Pod 進行通訊。在 Fargate 上執行的 Pod 會自動設定為使用其相關聯之叢集的叢集安全群組。請務必確認叢集中的任何現有節點可以傳送與接收叢集安全群組的流量。受管節點群組也會自動設定為使用叢集安全群組，因此您不需要為此相容性修改或檢查它們 (請參閱 [透過受管節點群組來簡化節點生命週期](managed-node-groups.md))。

對於使用 `eksctl`或 Amazon EKS Managed AWS CloudFormation 範本建立的現有節點群組，您可以將叢集安全群組手動新增至節點。您還可以修改節點群組的 Auto Scaling 群組啟動範本，從而將叢集安全群組連接至執行個體。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[變更執行個體的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SG_Changing_Group_Membership)。

您可以在叢集**的網路**區段 AWS 管理主控台 下的 中，檢查叢集的安全群組。或者，您可以使用下列 CLI AWS 命令來執行此操作。使用此命令時，請以您叢集的名稱取代 `<my-cluster>`。

```
aws eks describe-cluster --name <my-cluster> --query cluster.resourcesVpcConfig.clusterSecurityGroupId
```

## 步驟 2：建立 Fargate Pod 執行角色
<a name="fargate-sg-pod-execution-role"></a>

當您的叢集在 AWS Fargate 上建立 Pod 時，在 Fargate 基礎設施上執行的元件必須代表您呼叫 AWS APIs。Amazon EKS Pod 執行角色提供進行此類工作的 IAM 許可。若要建立 AWS Fargate Pod 執行角色，請參閱 [Amazon EKS Pod 執行 IAM 角色](pod-execution-role.md)。

**注意**  
如果您使用 `--fargate` 選項以 `eksctl` 建立叢集，則您的叢集已擁有 Pod 執行角色，您可以在 IAM 主控台中使用模式 `eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL` 找到該角色。同樣地，如果您使用 `eksctl` 建立 Fargate 設定檔，`eksctl` 將建立 Pod 執行角色 (如果該角色尚未建立)。

## 步驟 3：為您的叢集建立 Fargate 設定檔
<a name="fargate-gs-create-profile"></a>

您必須定義 Fargate 設定檔，指定哪些 Pod 在啟動時使用 Fargate，然後才能排程在叢集 Fargate 上執行的 Pod。如需詳細資訊，請參閱[定義哪些 Pod 在啟動時會使用 AWS Fargate](fargate-profile.md)。

**注意**  
若您使用 `--fargate` 選項以 `eksctl` 建立叢集，則您叢集的 Fargate 設定檔已建立完成，並包含在 `kube-system` 和 `default` 命名空間中所有 Pod 的選取器。使用下列程序來為您想要搭配 Fargate 使用的任何其他命名空間建立 Fargate 描述檔。

您可以使用下列任一工具建立 Fargate 設定檔：
+  [`eksctl`](#eksctl_fargate_profile_create) 
+  [AWS 管理主控台](#console_fargate_profile_create) 

### `eksctl`
<a name="eksctl_fargate_profile_create"></a>

此程序需要 `eksctl` 版本 `0.215.0` 或更新版本。您可使用以下命令檢查您的版本：

```
eksctl version
```

如需有關安裝或更新 `eksctl` 的指示，請參閱 `eksctl` 文件中的 [Installation](https://eksctl.io/installation) 一節。

 **若要使用 `eksctl` 建立 Fargate 設定檔** 

使用以下 `eksctl` 命令建立您的 Fargate 設定檔，並以您自己的值取代每一個 `<example value>`。您必須指定一個命名空間。不過，`--labels` 選項並非必要項目。

```
eksctl create fargateprofile \
    --cluster <my-cluster> \
    --name <my-fargate-profile> \
    --namespace <my-kubernetes-namespace> \
    --labels <key=value>
```

對於 `<my-kubernetes-namespace>` 和 `<key=value>` 標籤可以使用某些萬用字元。如需詳細資訊，請參閱[Fargate 設定檔萬用字元](fargate-profile.md#fargate-profile-wildcards)。

### AWS 管理主控台
<a name="console_fargate_profile_create"></a>

 **若要使用 AWS 管理主控台 建立 Fargate 設定檔** 

1. 開啟 [Amazon EKS 主控台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 選擇要為其建立 Fargate 設定檔的叢集。

1. 選擇 **Compute** (運算) 索引標籤。

1. 在 **Fargate profiles** (Fargate 設定檔) 下，選擇 **Add Fargate profile** (新增 Fargate 設定檔)。

1. 在 **Configure Fargate profile** (設定 Fargate 設定檔) 頁面上，執行以下操作：

   1. 對於 **Name** (名稱)，輸入您 Fargate 描述檔的名稱。名稱必須是唯一的。

   1. 對於 **Pod 執行角色**，請選擇要搭配您的 Fargate 設定檔使用的 Pod 執行角色。只會顯示具有 `eks-fargate-pods.amazonaws.com` 服務委託人的 IAM 角色。如果未列出任何角色，您必須建立一個。如需詳細資訊，請參閱[Amazon EKS Pod 執行 IAM 角色](pod-execution-role.md)。

   1. 視需要修改選取的**子網路**。
**注意**  
只有私有子網路支援在 Fargate 上執行的 Pod。

   1. 對於 **Tags** (標籤)，您可以選擇標記 Fargate 設定檔。這些標籤不會傳播至與設定檔相關聯的其他資源，例如 Pod。

   1. 選擇**下一步**。

1. 在**設定 Pod 選擇**頁面上，執行以下作業：

   1. 針對**命名空間**，輸入與 Pod 相符的命名空間。
      + 您可以使用特定的命名空間進行比對，例如 `kube-system` 或 `default`。
      + 您可以使用某些萬用字元 (例如 `prod-*`) 來比對多個命名空間 (例如 `prod-deployment` 和 `prod-test`)。如需詳細資訊，請參閱[Fargate 設定檔萬用字元](fargate-profile.md#fargate-profile-wildcards)。

   1. (選用) 將 Kubernetes 標籤新增至選取器。將其特別新增至需與特定命名空間中的 Pod 相符的選取器。
      + 您可以將標籤 `infrastructure: fargate` 新增至選取器，因此只有在也有 `infrastructure: fargate` Kubernetes 標籤之指定命名空間中的 Pod 與選取器相符。
      + 您可以使用某些萬用字元 (例如 `key?: value?`) 來比對多個命名空間 (例如 `keya: valuea` 和 `keyb: valueb`)。如需詳細資訊，請參閱[Fargate 設定檔萬用字元](fargate-profile.md#fargate-profile-wildcards)。

   1. 選擇**下一步**。

1. 在 **Review and create** (檢閱和建立) 頁面，檢閱您 Fargate 設定檔的資訊並選擇 **Create** (建立)。

## 步驟 4：更新 CoreDNS
<a name="fargate-gs-coredns"></a>

CoreDNS 預設為在 Amazon EKS 叢集上的 Amazon EC2 基礎設施上執行。若您希望*僅*在叢集的 Fargate 上執行 Pod，請完成以下步驟。

**注意**  
如果透過 `--fargate` 選項使用 `eksctl` 建立叢集，您可以直接跳至 [後續步驟](#fargate-gs-next-steps)。

1. 使用下列命令來刪除 CoreDNS 的 Fargate 設定檔。使用您的叢集名稱取代 `<my-cluster>`、使用您的帳戶 ID 取代 `<111122223333>`、使用您的 Pod 執行角色名稱取代 `<AmazonEKSFargatePodExecutionRole>`，並使用私有子網路的 ID 取代 `<000000000000000a>`、`<000000000000000b>` 和 `<000000000000000c>`。若沒有 Pod 執行角色，則必須先建立一個 (請參閱 [步驟 2：建立 Fargate Pod 執行角色](#fargate-sg-pod-execution-role))。
**重要**  
角色 ARN 不能包含 `/` 之外的[路徑](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names)。例如，如果您的角色名稱是 `development/apps/AmazonEKSFargatePodExecutionRole`，則您必須在指定角色的 ARN 時將其變更為 `AmazonEKSFargatePodExecutionRole`。角色 ARN 的格式必須是 ` arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole>`。

   ```
   aws eks create-fargate-profile \
       --fargate-profile-name coredns \
       --cluster-name <my-cluster> \
       --pod-execution-role-arn arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole> \
       --selectors namespace=kube-system,labels={k8s-app=kube-dns} \
       --subnets subnet-<000000000000000a> subnet-<000000000000000b> subnet-<000000000000000c>
   ```

1. 觸發 `coredns` 部署的推展。

   ```
   kubectl rollout restart -n kube-system deployment coredns
   ```

## 後續步驟
<a name="fargate-gs-next-steps"></a>
+ 您可以透過以下工作流程開始遷移現有的應用程式，以在 Fargate 上執行。

  1.  [建立 Fargate 設定檔](fargate-profile.md#create-fargate-profile)，與您的應用程式的 Kubernetes 命名空間和 Kubernetes 標籤相符。

  1. 刪除並重建新立任何現有 Pod，以便在 Fargate 上對其進行排程。修改 `<namespace>` 和 `<deployment-type>`，以更新您的特定 Pod。

     ```
     kubectl rollout restart -n <namespace> deployment <deployment-type>
     ```
+ 部署 [透過 Application Load Balancer 路由應用程式與 HTTP 流量](alb-ingress.md) 來允許您在 Fargate 執行的 Pod 輸入物件。
+ 您可以使用 [透過垂直 Pod 自動擴展器來調整 Pod 資源](vertical-pod-autoscaler.md) 為 Fargate Pod 設定 CPU 和記憶體的初始正確大小，然後使用 [使用 Horizontal Pod Autoscaler 擴展 Pod 部署](horizontal-pod-autoscaler.md) 來擴展這些 Pod。若要讓 Vertical Pod Autoscaler 自動將 Pod 重新部署到具有較高 CPU 和記憶體組合的 Fargate，請將 Vertical Pod Autoscaler 的模式設定為 `Auto` 或 `Recreate`。這是為了確認功能可以運作正確。如需詳細資訊，請參閱 GitHub 上的 [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start) 文件。
+ 請遵循[以下說明](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-otel.html)設定 [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel) (ADOT) 收集器，以便監控應用程式。