セルフマネージド Ubuntu Linux ノードを作成する - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

セルフマネージド Ubuntu Linux ノードを作成する

注記

マネージド型ノードグループでは、ユースケースにいくつかの利点がある場合があります。詳細については、「マネージドノードグループを使用してノードライフサイクルを簡素化する」を参照してください。

このトピックでは、Ubuntu on Amazon Elastic Kubernetes Service (EKS) または Amazon EKS クラスターに登録されている Ubuntu Pro on Amazon Elastic Kubernetes Service (EKS) ノードで Auto Scaling グループを起動する方法について説明します。Ubuntu および Ubuntu Pro for EKS は、AWS と共同で開発されたカスタム AWS カーネルを含め公式の Ubuntu Minimal LTS をもとにし、EKS 専用に構築されています。Ubuntu Pro は、EKS サポート期間の延長、カーネル livepatch、FIPS コンプライアンスと無制限の Pro コンテナを実行する機能をサポートすることで、セキュリティカバレッジを追加します。

ノードがクラスターに参加したら、それらのノードにコンテナ化したアプリケーションをデプロイできるようになります。詳細については、「Ubuntu on AWS」のドキュメントおよび eksctl ドキュメントの「Custom AMI support」を参照してください。

重要
  • Amazon EKS ノードは標準の Amazon EC2 インスタンスであり、通常の Amazon EC2 インスタンス価格に基づいて請求されます。詳細については、「Amazon EC2 料金」を参照してください。

  • AWS Outposts 上の Amazon EKS 拡張クラスターで Ubuntu ノードを起動できますが、AWS Outposts 上のローカルクラスターでは起動できません。詳細については、「AWS Outposts を使用して Amazon EKS をオンプレミスにデプロイする」を参照してください。

  • x86 または Arm プロセッサを使用して Amazon EC2 インスタンスにデプロイできます。ただし、Inferentia チップがあるインスタンスは、最初に Neuron SDK をインストールする必要がある場合があります。

eksctl を使用して Ubuntu for EKS または Ubuntu Pro for EKS ノードを起動する

この手順には、eksctl バージョン 0.191.0 以降が必要です。お使いのバージョンは、以下のコマンドを使用して確認できます。

eksctl version

eksctl のインストールまたはアップグレードの手順については、eksctl ドキュメントの「インストール」を参照してください。

注記

この手順は、eksctl で作成されたクラスターに対してのみ機能します。

  1. 次のコンテンツをデバイスにコピーします。my-cluster を自分のクラスター名に置き換えます。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字はアルファベット文字である必要があります。また、100 文字より長くすることはできません。ng-ubuntu をノードグループの名前に置き換えます。ノードグループ名は 63 文字以下である必要があります。先頭は文字または数字でなければなりませんが、残りの文字にはハイフンおよびアンダースコアを含めることもできます。Arm インスタンスにデプロイするには、m5.large を Arm インスタンスタイプに置き換えます。my-ec2-keypair-name を、起動後に、SSH を使用してノードに接続するときに使用できる Amazon EC2 SSH キーペアの名前に置き換えます。Amazon EC2 キーペアをまだ持っていない場合は、AWS Management Console で作成できます。詳細については、「Amazon EC2 ユーザーガイド」の「Amazon EC2 キーペア」を参照してください。残りすべての example values を独自の値に置き換えてください。置き換えが完了したら、変更したコマンドを実行して ubuntu.yaml ファイルを作成します。

    重要

    ノードグループを AWS Outposts、AWS Wavelength、または AWS Local Zones サブネットにデプロイする場合、クラスターの作成時に AWS Outposts、AWS Wavelength、または AWS Local Zone のサブネットを渡さないでください。次の例では、サブネットを指定する必要があります。詳細については、eksctl ドキュメントの「設定ファイルからノードグループを作成する」と「Config ファイルのスキーマ」を参照してください。region-code をクラスターのある AWS リージョン に置き換えます。

    cat >ubuntu.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.31' iam: withOIDC: true nodeGroups: - name: ng-ubuntu instanceType: m5.large desiredCapacity: 3 amiFamily: Ubuntu22.04 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: my-ec2-keypair-name EOF

    Ubuntu Pro ノードグループを作成するには、amiFamily 値を UbuntuPro2204 に変更します。

  2. 次のコマンドでノードをデプロイします。

    eksctl create nodegroup --config-file=ubuntu.yaml

    出力例は次のとおりです。

    ノードの作成中に、複数の行が出力されます。出力の最後の行は、次のサンプル行が表示されます。

    [✔] created 1 nodegroup(s) in cluster "my-cluster"
  3. (オプション) サンプルアプリケーションをデプロイして Ubuntu ノードをテストします。

  4. 次の条件が true の場合、IMDS への Pod アクセスをブロックすることをお勧めします。

    • すべての Kubernetes サービスアカウントに IAM ロールを割り当てて、Pods が必要最小限のアクセス許可のみを持つように計画しています。

    • クラスター内の Pods が、現在の AWS リージョン の取得といったその他の理由で Amazon EC2 インスタンスメタデータサービス (IMDS) へのアクセスを必要としていません。

    詳細については、「ワーカーノードに割り当てられたインスタンスプロファイルへのアクセスを制限する」を参照してください。