セルフマネージド型の Bottlerocket ノードの起動
マネージド型ノードグループでは、ユースケースにいくつかの利点がある場合があります。詳細については、「マネージド型ノードグループ」を参照してください。
このトピックでは、Amazon EKS クラスターに登録されている Bottlerocketeksctl
ドキュメント内の Custom AMI support
インプレースアップグレードについて詳しくは、GitHub の Bottlerocket Update Operator
Amazon EKS ノードは標準の Amazon EC2 インスタンスであり、通常の Amazon EC2 インスタンス価格に基づいて請求されます。詳細については、「Amazon EC2 料金表
-
x86 または Arm プロセッサを使用して Amazon EC2 インスタンスにデプロイできます。ただし、GPU または Inferentia チップがあるインスタンスにはデプロイできません。
-
中国 (北京) (
cn-north-1
) または中国 (寧夏) (cn-northwest-1
) のリージョンにデプロイすることはできません。 -
ノードをデプロイする AWS CloudFormation テンプレートはありません。
-
Bottlerocket のイメージには SSH サーバーやシェルは付属していません。SSH で管理者コンテナを有効にし、ユーザーデータとともにブートストラップの設定ステップを渡すために、帯域外のアクセス方式を使用できます。詳細については、GitHub の「bottleRocket readme.md
」のセクションを参照してください。
eksctl
を使用して Bottlerocket ノードを起動する
この手順には、eksctl
バージョン 0.84.0
以降が必要です。 のバージョンは、以下のコマンドを使用して確認できます。
eksctl version
eksctl
のインストールまたはアップグレードの詳細については、「eksctl のインストールまたはアップグレード」 を参照してください。
この手順は、eksctl
で作成されたクラスターに対してのみ機能します。
-
次の内容で、
というファイルを作成します。bottlerocket.yaml
をすべて自分の値に置き換えてください。Arm インスタンスにデプロイするには、example-value
を Arm インスタンスタイプに置き換えます。Arm Amazon EC2 インスタンスタイプを指定する場合は、デプロイする前に Amazon EKS 最適化 Arm Amazon Linux AMI の考慮事項を確認してください。カスタム AMI を使用したデプロイの手順については、GitHub の Building Bottlerocketm5.large
と、 eksctl
ドキュメントの Custom AMI supportを参照してください。マネージド型ノードグループをデプロイするには、起動テンプレートを使用してカスタム AMI をデプロイします。詳細については、「起動テンプレートのサポート」を参照してください。 重要 ノードグループを AWS Outposts、AWS Wavelength、または AWS Local Zones サブネットにデプロイする場合、AWS Outposts、AWS Wavelength、または AWS Local Zones のサブネットは、クラスターの作成時に渡さないでください。次の例では、サブネットを指定する必要があります。詳細については、
eksctl
ドキュメントの「設定ファイルからノードグループを作成する」と「Config ファイルのスキーマ 」を参照してください。 --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name:
my-cluster
region:region-code
version:'1.21'
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 ssh: allow: true publicKeyName:YOUR_EC2_KEYPAIR_NAME
-
次のコマンドでノードをデプロイします。
eksctl create cluster --config-file=
bottlerocket.yaml
出力は次のとおりです。ノードの作成中に、複数の行が出力されます。出力の最後の行は、次のサンプル行が表示されます。
[✔] created 1 nodegroup(s) in cluster "
my-cluster
" -
(オプション) Amazon EBS CSI プラグイン
を使用して、Bottlerocket ノード上に Kubernetes 永続ボリューム を作成します。デフォルトの Amazon EBS ドライバーは、Bottlerocket に含まれていないファイルシステムツールに依存します。ドライバーを使用してストレージクラスを作成する方法の詳細については、「Amazon EBS CSI ドライバー」を参照してください。 -
(オプション) デフォルトでは、
kube-proxy
はnf_conntrack_max
カーネルパラメータを、Bottlerocket がブート時に設定するものとは異なるデフォルト値に設定します。Bottlerocket のデフォルト設定のままにするには、次のコマンドを使用して kube-proxy 設定を編集します。 kubectl edit -n kube-system daemonset kube-proxy
次の例に示すように、
--conntrack-max-per-core
と--conntrack-min to the kube-proxy
の引数を追加します。0
の設定は、変更がないことを意味します。containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config
- --conntrack-max-per-core=0 - --conntrack-min=0
-
(オプション) サンプルアプリケーションをデプロイして Bottlerocket ノードをテストします。
-
(オプション) ポッドには必要最低限のアクセス許可のみを与えるように、すべての Kubernetes サービスアカウントに IAM ロールを割当て、クラスター内のポッドが現在の AWS リージョン を取得するなどの理由から Amazon EC2 インスタンスメタデータサービス (IMDS) へのアクセス許可を必要としないようにしたい場合は、IMDS へのポッドのアクセスをブロックすることをお勧めします。詳細については、「ワーカーノードに割り当てられたインスタンスプロファイルへのアクセスを制限する
」を参照してください。