Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
如何使用 Bottlerocket AMI 在 Amazon EKS 中创建托管节点组?
我想学习如何使用 Bottlerocket 亚马逊机器映像(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 密钥对和 Amazon EC2 实例。
--- 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 集群中发布其节点
-
运行以下 eksctl 命令来创建节点组:
$ eksctl create nodegroup -f bottlerocket.yaml[✔] created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
-
在 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 代理,允许您在 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!
相关信息

相关内容
- AWS 官方已更新 6 个月前