我想要使用 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 Session Manager。
若要連線到 Bottlerocket 節點,請完成以下步驟:
-
從 Amazon EC2 主控台擷取 Bottlerocket 節點的執行個體 ID,或執行以下命令:
kubectl get nodes -o wide
-
使用執行個體 ID 啟動 Session Manager 工作階段。如需更多啟動工作階段的資訊,請參閱啟動工作階段 (Systems Manager 主控台)。
**注意:**節點群組組態中的 AmazonSSMManagedInstanceCore IAM 政策可讓您透過 Session Manager 存取 Bottlerocket 節點。
相關資訊
建立自行管理的 Bottlerocket 節點
使用受管節點群組簡化節點生命週期
GitHub 網站上的將 Bottlerocket AMI 與 Amazon EKS 搭配使用