Bottlerocket Amazon マシンイメージ (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 キーペアと Linux インスタンス」を参照してください。
---
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 ノードに接続します。ノードインスタンスロールの Systems Manager 権限をすでに有効にしているため、AWS Systems Manager Agent (SSM Agent) がノード上で実行されます。
以下のコマンドを実行して、インスタンス 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
システムマネージャーセッションを開始する
デフォルトでは、Bottlerocket には containerd の別のインスタンスで実行されるコントロールコンテナがあります。このコンテナは SSM エージェントを実行し、Bottlerocket ノードでコマンドを実行したり、インタラクティブなシェルセッションを開始したりできます。
インスタンスを選択して、システムマネージャーセッションを起動します。次の例は、i-0cf32f13f60c2f501 インスタンスのシステムマネージャーセッションコマンドを示しています。
$ 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 インスタンスタイプ