使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

如何在 Amazon EKS 中使用 Bottlerocket AMI 建立受管節點群組?

2 分的閱讀內容
0

我想了解如何使用 Bottlerocket Amazon Machine Image (AMI) 和 eksctl 在 Amazon Elastic Kubernetes Service (Amazon EKS) 中建立 Bottlerocket 受管節點群組。

解決方法

先決條件

在完成解決步驟之前,請確認您的 eksctl 版本為 0.124.0 或更新版本。

若要檢查您的版本,請執行下列命令:

$ eksctl version

建立 bottlerocket.yaml 檔案

開啟您安裝 eksctl 的終端。然後,使用下列範例來建立並儲存 bottlerocket.yaml 檔案。

注意:

  • mybottlerocket-cluster 取代為您的叢集名稱。此名稱只能包含連字號和區分大小寫的英數字元,且必須以字母字元開頭,不得超過 100 個字元。
  • 將 bottlerocket-nodegroup 取代為您的節點群組名稱。此名稱只能包含連字號和區分大小寫的英數字元,且必須以字母字元開頭,不得超過 100 個字元。
  • 指定執行個體類型。例如,若要在 Arm 執行個體上部署,請將 m5.xlarge 取代為 Arm 執行個體類型。
  • eks_bottlerocket 取代為 Amazon Elastic Compute Cloud (Amazon EC2) SSH 金鑰對名稱。啟動節點之後,請使用 SSH 連結至這些節點。
    **注意:**如果您沒有 Amazon EC2 SSH 金鑰對,請在 AWS 管理主控台中建立一個金鑰對。如需詳細資訊,請參閱 Amazon EC2 key pairs and Linux instances
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: mybottlerocket-cluster
  region: us-west-2
  version: '1.27'

managedNodeGroups:
  - name: bottlerocket-nodegroup
    instanceType: m5.xlarge
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    amiFamily: Bottlerocket
    labels: { role: br-worker }
    tags:
       nodegroup-type: Bottlerocket
    ssh:
      allow: true
      publicKeyName: eks_bottlerocket

**注意:**您可以針對一般用途、運算最佳化、記憶體最佳化和儲存最佳化的執行個體類型,建立 BottleRocket 受管節點群組。Bottlerocket AMI 不支援加速運算執行個體類型。

建立節點群組並列出 EKS 叢集中的節點

  1. 執行下列 eksctl 命令以建立節點群組:

    $ eksctl create nodegroup -f bottlerocket.yaml[✔]  created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
  2. 列出 EKS 叢集中的節點及屬性:

    $ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystemNODE                                          ARCH    OS-Image                                OS
    ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux
    ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux

連線至 Bottlerocket AMI 節點 (選用)

透過 AWS Systems Manager 工作階段連線至新的 Bottlerocket 節點。AWS Systems Manager Agent (SSM Agent) 會在節點上執行,因為您已為此節點執行個體角色啟用 Systems Manager 權限。

執行下列命令以尋找執行個體 ID:

$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem,InstanceId:.spec.providerIDNODE                                           ARCH    OS-Image                                OS      InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-08c218b729ecf9b5d

啟動 Systems Manager 工作階段

依預設,Bottlerocket 具有控制容器,會在另一個 containerd 執行個體上執行。此容器會執行 SSM Agent,讓您在 Bottlerocket 節點上執行命令或啟動互動式 Shell 工作階段。

請選擇一個執行個體,然後啟動 Systems Manager 工作階段。下列範例顯示 i-0cf32f13f60c2f501 執行個體的 Systems Manager工作階段命令:

$ aws ssm start-session --target i-0cf32f13f60c2f501 --region us-west-2
Starting session with SessionId: EKS-Test-User-0077e4c89ad2bc888
          Welcome to Bottlerocket's control container!

相關資訊

啟動自我管理的 Bottlerocket 節點

什麼是 Amazon EKS?

執行個體類型 (Amazon EC2)

AWS 官方
AWS 官方已更新 10 個月前