Bottlerocket AMI を使用して Amazon EKS でマネージドノードグループを作成する方法を教えてください。

所要時間2分
0

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 クラスターに一覧表示します

  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.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 インスタンスタイプ

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ