我想使用 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 节点,请完成以下步骤:
-
从 Amazon EC2 控制台或通过运行以下命令检索您的 Bottlerocket 节点的实例 ID:
kubectl get nodes -o wide
-
使用实例 ID 启动会话管理器会话。有关启动会话的更多信息,请参阅启动会话(Systems Manager 控制台)。
**注意:**节点组配置中的 IAM 策略 AmazonSSMManagedInstanceCore 允许会话管理器访问您的 Bottlerocket 节点。
相关信息
创建自行管理的 Bottlerocket 节点
使用托管节点组简化节点生命周期
github 网站上的 Using a Bottlerocket AMI with Amazon EKS(将 Bottlerocket AMI 与 Amazon EKS 一起使用)