スキップしてコンテンツを表示

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

所要時間2分
0

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 ノードに接続するには、次の手順を実行します。

  1. Amazon EC2 コンソールから、または次のコマンドを実行して、Bottlerocket ノードのインスタンス ID を取得します。

    kubectl get nodes -o wide
  2. インスタンス ID を使用して Session Manager セッションを開始します。セッションの開始の詳細については、「セッションを開始する (Systems Manager コンソール)」を参照してください。

注: ノードグループ設定の AmazonSSMManagedInstanceCore IAM ポリシーにより、Session Manager は Bottlerocket ノードにアクセスできます。

関連情報

セルフマネージド Bottlerocket ノードの作成

マネージドノードグループを使用してノードライフサイクルを簡素化する

Using a Bottlerocket AMI with Amazon EKS (Amazon EKS で Bottlerocket AMI を使用する)(Github ウェブサイト)

AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ