跳至内容

如何使用 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 会话管理器

要连接到 Bottlerocket 节点,请完成以下步骤:

  1. 从 Amazon EC2 控制台或通过运行以下命令检索您的 Bottlerocket 节点的实例 ID:

    kubectl get nodes -o wide
  2. 使用实例 ID 启动会话管理器会话。有关启动会话的更多信息,请参阅启动会话(Systems Manager 控制台)

**注意:**节点组配置中的 IAM 策略 AmazonSSMManagedInstanceCore 允许会话管理器访问您的 Bottlerocket 节点。

相关信息

创建自行管理的 Bottlerocket 节点

使用托管节点组简化节点生命周期

github 网站上的 Using a Bottlerocket AMI with Amazon EKS(将 Bottlerocket AMI 与 Amazon EKS 一起使用)

AWS 官方已更新 5 个月前