我想了解如何使用 Bottlerocket Amazon Machine Image (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 key pairs and Linux instances。
---
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 Agent,讓您在 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!
相關資訊
啟動自我管理的 Bottlerocket 節點
什麼是 Amazon EKS?
執行個體類型 (Amazon EC2)