Bottlerocket AMI を使用して Amazon Elastic Kubernetes サービス (Amazon EKS) でマネージドノードグループを作成したいと考えています。
解決策
設定ファイルを指定した eksctl を使用して、Bottlerocket マネージドノードグループを作成できます。
前提条件
- eksctl バージョン 0.124.0 以降
- 既存の Amazon EKS クラスター
- Amazon Elastic Compute Cloud (Amazon EC2) SSH キーペア (ノードへの SSH アクセスが必要な場合)
Bottlerocket AMI を使用してマネージドノードグループを作成するには、以下の手順を実行します。
eksctl のバージョンを確認する
eksctl のバージョンを確認するには、次のコマンドを実行します。
eksctl version
eksctl をインストールまたはアップグレードする必要がある場合は、「Installation options for 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 サーバーやシェルは含まれていません。トラブルシューティングのために 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 ノードの作成
マネージドノードグループを使用してノードライフサイクルを簡素化する
Using a Bottlerocket AMI with Amazon EKS (Amazon EKS で Bottlerocket AMI を使用する)(Github ウェブサイト)