

 **協助改進此頁面** 

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

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

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

# 建立自我管理的 Ubuntu Linux 節點
<a name="launch-node-ubuntu"></a>

**注意**  
受管節點群組可能會為您的使用案例提供一些優勢。如需詳細資訊，請參閱[透過受管節點群組來簡化節點生命週期](managed-node-groups.md)。

本主題會說明如何啟動向 Amazon EKS 叢集註冊的 [Amazon Elastic Kubernetes Service (EKS) 上的 Ubuntu](https://cloud-images.ubuntu.com/aws-eks/) 或 [Amazon Elastic Kubernetes Service (EKS) 上的 Ubuntu Pro](https://ubuntu.com/blog/ubuntu-pro-for-eks-is-now-generally-available) 節點的 Auto Scaling 群組。Ubuntu 和 Ubuntu Pro for EKS 是以官方 Ubuntu Minimal LTS 為基礎，包括與 共同開發的自訂 AWS 核心 AWS，並專門為 EKS 建置。Ubuntu Pro 透過支援 EKS 延長支援期間、核心 livepatch、FIPS 合規以及執行無限 Pro 容器的能力來新增額外的安全涵蓋範圍。

節點加入叢集後，您就可以將容器化應用程式部署至其中。如需詳細資訊，請參閱 `eksctl` 文件中的 [AWS上的 Ubuntu](https://documentation.ubuntu.com/aws/en/latest/) 和[自訂 AMI 支援](https://eksctl.io/usage/custom-ami-support/)。

**重要**  
Amazon EKS 節點為標準 Amazon EC2 執行個體，會根據一般 Amazon EC2 執行個體價格向您收取這些節點的費用。如需詳細資訊，請參閱 [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)。
您可以在 AWS Outposts 上的 Amazon EKS 擴充叢集中啟動 Ubuntu 節點，但無法在 AWS Outposts 的本機叢集中啟動它們。如需詳細資訊，請參閱[使用 AWS Outposts 在內部部署 Amazon EKS](eks-outposts.md)。
您可以使用 `x86` 或 Arm 處理器部署至 Amazon EC2 執行個體。不過，具有 Inferentia 晶片的執行個體可能需要先安裝 [Neuron SDK](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/)。

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

```
eksctl version
```

如需如何安裝或升級 `eksctl` 的指示，請參閱 `eksctl` 文件中的[安裝](https://eksctl.io/installation)。注意：此程序僅適用於使用 `eksctl` 建立的叢集。

1. 將以下內容複製到您的裝置。使用您叢集的名稱取代 `my-cluster`。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以字母字元開頭，且長度不可超過 100 個字元。將 `ng-ubuntu` 取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭，但剩餘字元也可以包含連字符和底線。若要在 Arm 執行個體上部署，請以 Arm 執行個體類型取代 `m5.large`。使用 Amazon EC2 SSH 金鑰對名稱取代 `my-ec2-keypair-name`，您可以在節點啟動後使用該金鑰對來透過 SSH 連接至節點。如果您還沒有 Amazon EC2 金鑰對，可以在 AWS 管理主控台中建立一個。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的 [Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。使用您自己的值取代其餘所有範例值。完成取代後，請執行修改後的命令以建立 `ubuntu.yaml` 檔案。
**重要**  
若要將節點群組部署至 AWS Outposts、 AWS Wavelength 或 AWS Local Zone 子網路，請勿在建立叢集時傳遞 AWS Outposts、 AWS Wavelength 或 AWS Local Zone 子網路。您必須在下列範例中指定子網路。如需詳細資訊，請參閱 `eksctl` 文件中的[從組態檔案建立節點群組](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file)和[組態檔案結構描述](https://eksctl.io/usage/schema/)。將 *region-code* 取代為您的叢集所在的 AWS 區域。

   ```
   cat >ubuntu.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-ubuntu
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Ubuntu2204
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

   若要建立 Ubuntu Pro 節點群組，只需將 `amiFamily` 值變更為 `UbuntuPro2204` 即可。

1. 使用下列命令部署節點。

   ```
   eksctl create nodegroup --config-file=ubuntu.yaml
   ```

   範例輸出如下。

   建立節點時，會有數行輸出。輸出的最後幾行之一類似於以下的範例行。

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (選用) 部署[範例應用程式](sample-deployment.md)來測試您的 Ubuntu 節點。

1. 如果下列條件為真，我們建議封鎖 Pod 對 IMDS 的存取：
   + 您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶，以便 Pod 僅具有所需的最低許可。
   + 叢集中沒有任何 Pod 因其他原因需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS)，例如擷取目前 AWS 區域。

   如需詳細資訊，請參閱[‬限制存取指派給工作節點的執行個體設定檔‭](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node)。