如何在 Amazon EKS 中使用 Bottlerocket AMI 创建托管节点组?
我想使用 eksctl 启动 Bottlerocket Amazon Machine Image (Bottlerock 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!
相关信息

相关内容
- 已提问 2 个月前lg...
- 已提问 1 个月前lg...
- 已提问 4 个月前lg...
- 已提问 2 个月前lg...
- 已提问 1 个月前lg...
- AWS 官方已更新 8 个月前
- AWS 官方已更新 2 个月前
- AWS 官方已更新 8 个月前
- AWS 官方已更新 1 年前