跳至內容

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

2 分的閱讀內容
0

我想要使用 Bottlerocket AMI,在 Amazon Elastic Kubernetes Service (Amazon EKS) 中建立受管節點群組。

解決方法

您可以使用 eksctl 搭配組態檔來建立 Bottlerocket 受管節點群組。

先決條件

  • eksctl 版本 0.124.0 或更新版本
  • 現有的 Amazon EKS 叢集
  • 如果您想要透過 SSH 存取節點,則需要 Amazon Elastic Compute Cloud (Amazon EC2) SSH 金鑰對

若要使用 Bottlerocket AMI 建立受管節點群組,請完成以下步驟:

驗證 eksctl 版本

若要驗證您的 eksctl 版本,請執行以下命令:

eksctl version

如果您需要安裝或升級 eksctl,請參閱 Eksctl 的安裝選項。

建立組態檔

**重要:**Bottlerocket 支援一般用途、運算最佳化、記憶體最佳化,以及儲存體最佳化執行個體類型。Bottlerocket 不支援加速運算執行個體。

使用以下組態建立名為 bottlerocket.yaml 的檔案:

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: mybottlerocket-cluster
  region: your-region
  version: '1.31'

iam:
  withOIDC: true

nodeGroups:
  - name: ng-bottlerocket
    instanceType: m5.large
    desiredCapacity: 3
    amiFamily: Bottlerocket
    ami: auto-ssm
    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: your-ec2-keypair-name

**注意:**請將 mybottlerocket-cluster 替換為您的叢集名稱。請將 your-region 替換為您的 AWS 區域。請將 your-ec2-keypair-name 替換為您的 Amazon EC2 SSH 金鑰對名稱。如果您沒有 Amazon EC2 金鑰對,請參閱為您的 Amazon EC2 執行個體建立金鑰對。

建立受管節點群組

若要建立受管節點群組,請執行以下命令:

eksctl create nodegroup --config-file=bottlerocket.yaml

此命令會建立節點群組,並向您的叢集註冊節點。此程序需要數分鐘才能完成。

驗證節點

若要驗證節點正在執行,請執行以下命令:

kubectl get nodes -o wide

輸出會顯示您的 Bottlerocket 節點,以及其狀態、Kubernetes 版本和作業系統資訊。

輸出範例:

NAME                                           STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                                       KERNEL-VERSION   CONTAINER-RUNTIME
ip-[IP_ADDRESS].us-west-2.compute.internal   Ready    <none>   5m    v1.31.0   [IP_ADDRESS] <none>        Bottlerocket OS 1.20.0 (aws-k8s-1.31)        5.15.0           containerd://1.7.11

連線到 Bottlerocket 節點

Bottlerocket 節點預設不包含 SSH 伺服器或 Shell。若要連線到 Bottlerocket 節點以進行疑難排解,請使用 AWS Systems Manager Session Manager。

若要連線到 Bottlerocket 節點,請完成以下步驟:

  1. 從 Amazon EC2 主控台擷取 Bottlerocket 節點的執行個體 ID,或執行以下命令:

    kubectl get nodes -o wide
  2. 使用執行個體 ID 啟動 Session Manager 工作階段。如需更多啟動工作階段的資訊,請參閱啟動工作階段 (Systems Manager 主控台)。

**注意:**節點群組組態中的 AmazonSSMManagedInstanceCore IAM 政策可讓您透過 Session Manager 存取 Bottlerocket 節點。

相關資訊

建立自行管理的 Bottlerocket 節點

使用受管節點群組簡化節點生命週期

GitHub 網站上的將 Bottlerocket AMI 與 Amazon EKS 搭配使用

AWS 官方已更新 10 個月前