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

2 分的閱讀內容
0

我想使用 eksctl 啟動 Bottlerocket Amazon Machine Image (Bottlerocket AMI),以在 Amazon Elastic Kubernetes Service (Amazon EKS) 建立一個受管節點群組。

解決方案

先決條件

1.    請確定您已安裝 eksctl 0.124.0 或更新版本。

2.    執行以下命令來檢查您的版本:

$ eksctl version

建立 bottlerocket.yaml 文件

1.    開啟在其中安裝 eksctl 的終端。然後,完成下列步驟以建立新的檔案。

2.    用您的叢集名稱取代 mybottlerocket-cluster。名稱只能包含英數字元 (區分大小寫) 和連字號。名稱必須以字母字元開頭,且長度不得超過 100 個字元。

3.    以節點群組的名稱取代 bottlerocket-nodegroup。名稱只能包含英數字元 (區分大小寫) 和連字號。名稱必須以字母字元開頭,且長度不得超過 100 個字元。

4.    指定執行個體類型。例如,若要部署在 ARM 執行個體上,請將 m5.xlarge 取代為 ARM 執行個體類型。

5.    將 eks_bottlerocket 取代為 Amazon Elastic Compute Cloud (Amazon EC2) SSH 金鑰對的名稱。啟動後,請使用 SSH 連線至這些節點。

**備註:**如果您沒有 Amazon EC2 SSH 金鑰對,則在 AWS 管理主控台中建立一個金鑰對。如需詳細資訊,請參閱 Amazon EC2 金鑰對和 Linux 執行個體

6.    用自己的值取代範例中的所有剩餘值。進行取代之後,請儲存 bottlerocket.yaml 檔案。

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
 
metadata:
  name: mybottlerocket-cluster
  region: us-west-2
  version: '1.23'
 
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 管理的節點群組。這些是靜態縮放 (T 系列)、一般用途 (M 系列)、運算最佳化 (C 系列)、記憶體最佳化 (R 系列),以及以 Graviton2 ARM 為基礎的執行個體類型。Bottlerocket AMI 不支援加速運算執行個體類型 (P、G、Inf1)。

如需 Bottlerocket AMI 的詳細資訊,請參閱 Amazon EKS 最佳化的 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.operatingSystem
NODE                                          ARCH    OS-Image                                OS
ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux
ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux
ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux

連線到 Bottlerocket AMI 節點 (選用)

透過 AWS Systems Manager (AWS SSM) 工作階段連線到新的 Bottlerocket 節點。AWS SSM 代理程式正在節點上執行,因為您已為節點執行個體角色啟用 AWS SSM 許可。如需 AWS SSM 的詳細資訊,請參閱什麼是 AWS Systems Manager?

1.    執行下列命令以尋找執行個體 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.providerID
NODE                                           ARCH    OS-Image                                OS      InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-08c218b729ecf9b5d

啟動 SSM 工作階段

依據預設,Bottlerocket 有一個控制容器,該容器在單獨的 containerd 執行個體上執行。此容器會執行 AWS SSM 代理程式,並可讓您在 Bottlerocket 節點上執行命令或啟動互動式 Shell 工作階段。

1.    選擇您先前識別的其中一個執行個體,然後啟動 SSM 工作階段。下列範例顯示了適用於 i-0cf32f13f60c2f501 執行個體的 SSM 工作階段命令:

$ 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?

AWS 官方
AWS 官方已更新 1 年前