Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS Outposts で Amazon EKS クラスターをデプロイする

フォーカスモード
AWS Outposts で Amazon EKS クラスターをデプロイする - Amazon EKS

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

このトピックでは、Outpost でローカルクラスターを実行する際に考慮すべき事項について、概要を説明します。また、Outpost でローカルクラスターをデプロイする方法についても説明します。

重要
  • これらの考慮事項は、関連する Amazon EKS ドキュメントには記載されていません。Amazon EKS ドキュメントに記載されている他のトピックの情報が、ここに紹介する考慮事項と競合する場合は、こちらの考慮事項を優先してください。

  • これらの考慮事項は変更される可能性があり、変更は頻繁に行われる場合があります。そのため、このトピックは定期的に確認することをお勧めします。

  • 考慮事項の多くは、AWS Cloud でクラスターを作成する場合の考慮事項とは異なります。

  • ローカルクラスターは Outpost ラックのみをサポートします。単一のローカルクラスターは、単一の論理 Outpost を構成する複数の物理 Outpost ラックにわたって実行できます。単一のローカルクラスターを複数の論理 Outposts にわたって実行することはできません。各論理 Outpost には、単一の Outpost ARN があります。

  • ローカルクラスターは、Outpost のアカウントで Kubernetes コントロールプレーンを実行および管理します。Kubernetes コントロールプレーンインスタンスでワークロードを実行したり、Kubernetes コントロールプレーンのコンポーネントを変更することはできません。これらのノードは Amazon EKS サービスによって管理されます。Kubernetes コントロールプレーンへの変更は、パッチ適用などの自動 Amazon EKS 管理アクションでは存続しません。

  • ローカルクラスターは、セルフマネージド理型アドオンとセルフマネージド型 Amazon Linux ノードグループをサポートしています。Amazon VPC CNI plugin for Kuberneteskube-proxyCoreDNS アドオンはローカルクラスターに自動的にインストールされます。

  • ローカルクラスターでは、Outposts で Amazon EBS を使用する必要があります。お客様の Outpost では、Kubernetes コントロールプレーンストレージに使用できる Amazon EBS が必要です。

  • ローカルクラスターは、Outposts で Amazon EBS を使用します。お客様の Outpost では、Kubernetes コントロールプレーンストレージに使用できる Amazon EBS が必要です。Outposts は、Amazon EBS gp2 ボリュームのみをサポートします。

  • Amazon EBS のバックアップ対象である Kubernetes PersistentVolumes は、Amazon EBS CSI ドライバーを使用してサポートされています。

  • ローカルクラスターのコントロールプレーンインスタンスは、可用性の高いスタックされたトポロジで設定されます。クォーラムを維持するには、3 つのコントロールプレーンインスタンスのうち 2 つが常に正常である必要があります。クォーラムが失われた場合、新しいマネージドインスタンスを有効にするにはいくつかのサービス側のアクションが必要になるため、AWS サポートにお問い合わせください。

前提条件

ローカルの Amazon EKS クラスターが作成される時点で、クラスターを作成する IAM プリンシパルが恒久的に追加されています。とりわけ、プリンシパルは管理者として、Kubernetes RBAC 承認テーブルに追加されます。このエンティティには system:masters アクセス許可が付与されています。このエンティティの ID は、クラスター設定には表示されません。したがって、クラスターを作成したエンティティをメモし、削除しないようにすることが重要です。初期状態では、サーバーを作成したプリンシパルのみが、kubectl を使用して Kubernetes API サーバーへの呼び出しを実行できます。コンソールを使用してクラスターを作成する場合は、クラスター上で kubectl コマンドを実行する際、同じ IAM 認証情報が AWS SDK 認証情報チェーンにあることを確認する必要があります。クラスターの作成が完了したら、他の IAM プリンシパルにクラスターへのアクセスを付与できます。

Amazon EKS ローカルクラスターを作成します。

このページで説明されている以下のツールを使用して、ローカルクラスターを作成できます。

AWS CLIAmazon EKS APIAWS SDKAWS CloudFormation または Terraform を使用して Outposts にクラスターを作成することもできます。

eksctl

eksctl を使用してローカルクラスターを作成するには

  1. デバイスまたは AWS CloudShell に eksctl コマンドラインツールのバージョン 0.204.0 以降をインストールします。eksctl をインストールまたはアップグレードするにはeksctl ドキュメントの「インストール」を参照してください。

  2. 次のコンテンツをデバイスにコピーします。次の値を置き換えたら、変更したコマンドを実行して outpost-control-plane.yaml ファイルを作成します。

    • region-code は、クラスターを作成する サポートされている AWS リージョンに置き換えます。

    • my-cluster の部分は、自分のクラスター名に置き換えます。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。

    • vpc-ExampleID1subnet-ExampleID1 を既存の VPC とサブネットの ID に置き換えます。VPC とサブネットは、AWS Outposts で Amazon EKS クラスターの VPC とサブネットを作成する要件を満たす必要があります。

    • uniqueid を Outpost の ID に置き換えます。

    • m5.large を Outpost で使用可能なインスタンスタイプに置き換えます。インスタンスタイプを選択する前に、「キャパシティに関する考慮事項に基づいて、AWS Outposts で Amazon EKS クラスターのインスタンスタイプとプレイスメントグループを選択する」を参照してください。3 つのコントロールプレーンインスタンスがデプロイされます。この番号を変更することはできません。

      cat >outpost-control-plane.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: "1.24" vpc: clusterEndpoints: privateAccess: true id: "vpc-vpc-ExampleID1" subnets: private: outpost-subnet-1: id: "subnet-subnet-ExampleID1" outpost: controlPlaneOutpostARN: arn:aws:outposts:region-code:111122223333:outpost/op-uniqueid controlPlaneInstanceType: m5.large EOF

      使用可能なすべてのオプションとデフォルトの完全なリストについては、eksctl ドキュメントの「AWS Outposts サポート」および「設定ファイルスキーマ」を参照してください。

  3. 前のステップで作成した設定ファイルを使用してクラスターを作成します。eksctl は、クラスターをデプロイするために VPC と 1 つのサブネットを Outpost に作成します。

    eksctl create cluster -f outpost-control-plane.yaml

    クラスターのプロビジョニングには数分かかります。クラスターの作成中は数行の出力が表示されます。出力の最後の行は次のサンプル行のようになります。

    [✓] EKS cluster "my-cluster" in "region-code" region is ready
    ヒント

    eksctl を使用してクラスターを作成するときに指定できるほとんどのオプションを表示するには、eksctl create cluster --help コマンドを使用します。使用可能なオプションをすべて表示するにはconfig ファイルを使用します。詳細については「eksctl ドキュメント」の「Using config files」(設定ファイルの使用) と「設定ファイルのスキーマ」を参照してください。設定ファイルの例は、GitHub で見つけることができます。

    eksctl コマンドはクラスターを作成した IAM プリンシパル (ユーザーまたはロール) のアクセスエントリを自動的に作成し、クラスター上の Kubernetes オブジェクトに対するアクセス許可を IAM プリンシパル管理者に付与しました。クラスター作成者にクラスター上の Kubernetes オブジェクトへの管理者アクセス権を付与したくない場合は、前の設定ファイルに次のテキストを追加します: bootstrapClusterCreatorAdminPermissions: false (metadatavpc、および outpost と同じレベル)。このオプションを追加した場合、クラスターの作成後に少なくとも 1 つの IAM プリンシパルのアクセスエントリを作成する必要があります。そうしないと、IAM プリンシパルはクラスター上の Kubernetes オブジェクトにアクセスできなくなります。

AWS Management Console

AWS Management Console を使用してクラスターを作成するには

  1. Amazon EKS の要件を満たす既存の VPC とサブネットが必要です。詳細については「AWS Outposts で Amazon EKS クラスターの VPC とサブネットを作成する」を参照してください。

  2. 既にローカルクラスター IAM ロールがある場合、または eksctl を使用してクラスターを作成する場合は、このステップはスキップできます。デフォルトではeksctl により、ロールが自動的に作成されます。

    1. IAM 信頼ポリシー用の JSON ファイルを作成するには次のコマンドを実行してください。

      cat >eks-local-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    2. Amazon EKS クラスターの IAM ロールを作成します。IAM ロールを作成するにはロールを作成する IAM プリンシパルiam:CreateRole アクション (許可) を割り当てる必要があります。

      aws iam create-role --role-name myAmazonEKSLocalClusterRole --assume-role-policy-document file://"eks-local-cluster-role-trust-policy.json"
    3. AmazonEKSLocalOutpostClusterPolicy という名前の Amazon EKS マネージド型ポリシーをロールにアタッチします。IAM ポリシーを IAM プリンシパルにアタッチするにはポリシーのアタッチを行っているプリンシパルに、次のいずれかの IAM アクション (許可) を割り当てる必要があります: iam:AttachUserPolicy または iam:AttachRolePolicy

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSLocalOutpostClusterPolicy --role-name myAmazonEKSLocalClusterRole
  3. Amazon EKS コンソールを開きます。

  4. コンソール画面の上部で、サポートされている AWS リージョン を選択したことを確認します。

  5. [クラスターを追加][作成] の順にクリックします。

  6. [クラスターの設定] ページで、次のフィールドの値を入力または選択します。

    • [Kubernetes コントロールプレーンの場所] – AWS Outposts を選択します。

    • [Outpost ID] - コントロールプレーンを作成する Outpost の ID を選択します。

    • [インスタンスタイプ] - インスタンスタイプを選択します。Outpost で使用可能なインスタンスタイプのみが表示されます。ドロップダウンリストでは、各インスタンスタイプにそのインスタンスタイプに推奨されるノード数が示されています。インスタンスタイプを選択する前に、「キャパシティに関する考慮事項に基づいて、AWS Outposts で Amazon EKS クラスターのインスタンスタイプとプレイスメントグループを選択する」を参照してください。すべてのレプリカは、同じインスタンスタイプを使用してデプロイされます。クラスターの作成後にインスタンスタイプを変更することはできません。3 つのコントロールプレーンインスタンスがデプロイされます。この番号を変更することはできません。

    • [名前] - クラスターの名前。AWS アカウント内で一意にする必要があります。この名前には英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。

    • [Kubernetes バージョン] – クラスターで使用する Kubernetes バージョンを選択します。以前のバージョンを使用する必要がない限り、最新バージョンを選択することをお勧めします。

    • [クラスターサービスロール] - AWS リソースを管理することを Kubernetes コントロールプレーンに許可するために、前のステップで作成した Amazon EKS クラスター IAM ロールを選択します。

    • [Kubernetes クラスター管理者アクセス] — クラスターを作成する IAM プリンシパル (ロールまたはユーザー) にクラスター上の Kubernetes オブジェクトへの管理者アクセス権を付与する場合は、デフォルト (許可) をそのまま使用します。Amazon EKS は IAM プリンシパルのアクセスエントリを作成し、クラスター管理者にそのアクセスエントリに対するアクセス許可を付与します。アクセスエントリの詳細については「EKS アクセスエントリを使用して Kubernetes へのアクセスを IAM ユーザーに許可する」を参照してください。

      クラスターを作成するプリンシパルとは異なる IAM プリンシパルに Kubernetes クラスターオブジェクトへの管理者アクセス権を付与したい場合は、拒否のオプションを選択します。クラスターの作成後、アクセスエントリを作成する IAM アクセス許可を持つすべての IAM プリンシパルは、Kubernetes クラスターオブジェクトへのアクセスを必要とする任意の IAM プリンシパルのアクセスエントリを追加できます。必要な IAM アクセス許可の詳細については、サービス認可リファレンスの「Amazon Elastic Kubernetes Service で定義されるアクション」を参照してください。拒否のオプションを選択し、アクセスエントリを作成しない場合、IAM プリンシパルはクラスター上の Kubernetes オブジェクトにアクセスできなくなります。

    • [タグ] - (オプション) クラスターにタグを追加します。詳細については「タグを使用して Amazon EKS リソースを整理する」を参照してください。このページを読み終えたら、[次へ] を選択してください。

  7. [ネットワーキングの指定] ページで、次のフィールドの値を選択してください:

    • [VPC] - 既存の VPC を選択します。VPC には、作成するクラスター、ノード、およびその他の Kubernetes リソースで利用できる十分な数の IP アドレスが必要です。VPC は、「VPC の要件と考慮事項」に記載されている要件を満たしている必要があります。

    • [サブネット] - デフォルトで、前のフィールドで指定した VPC 内の利用可能なすべてのサブネットがあらかじめ選択されています。選択するサブネットは、「サブネットの要件と考慮事項」に記載されている要件を満たしている必要があります。

    • [セキュリティグループ] - (オプション Amazon EKS が作成するネットワークインターフェイスに関連付ける 1 つまたは複数のセキュリティグループを指定します。Amazon EKS は、クラスターと VPC 間の通信を可能にするセキュリティグループを自動的に作成します。Amazon EKS はこのセキュリティグループおよびユーザーが選択したセキュリティグループを、作成するネットワークインターフェイスに関連付けます。Amazon EKS が作成するクラスターセキュリティグループの詳細については「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。Amazon EKS が作成するクラスターセキュリティグループのルールを変更できます。独自のセキュリティグループを追加することを選択した場合、クラスターの作成後に選択したセキュリティグループを変更することはできません。オンプレミスホストがクラスターエンドポイントと通信するためには、クラスターセキュリティグループからのインバウンドトラフィックを許可する必要があります。入出力のインターネット接続がないクラスター (プライベートクラスターとも呼ばれる) の場合は、次のいずれかを行う必要があります。

      • 必要となる VPC エンドポイントに関連付けられたセキュリティグループを追加します。必要となるエンドポイントの詳細については、「AWS サービスへのサブネットアクセス」の「インターフェイス VPC エンドポイントの使用」を参照してください。

      • VPC エンドポイントに関連付けられたセキュリティグループからのトラフィックを許可するように、Amazon EKS が作成したセキュリティグループを変更します。このページを読み終えたら、[次へ] を選択してください。

  8. [オブザーバビリティの設定] ページでは、有効にする [メトリクス][コントロールプレーンのロギング] オプションをオプションで選択できます。デフォルトでは、それぞれのログタイプは無効化されています。

  9. [確認と作成] ページで、前のページで入力または選択した情報を確認します。変更する必要がある場合は[編集] を選択してください。そのままでよければ、[作成] を選択してください。クラスターがプロビジョニングされている間、[ステータス] フィールドに [作成中] と表示されます。

    クラスターのプロビジョニングには数分かかります。

Amazon EKS ローカルクラスターを表示する

  1. クラスターを作成すると、作成された Amazon EC2 コントロールプレーンのインスタンスを表示できます。

    aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Name:Tags[?Key==`Name`]|[0].Value}' | grep my-cluster-control-plane

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

    "Name": "my-cluster-control-plane-id1" "Name": "my-cluster-control-plane-id2" "Name": "my-cluster-control-plane-id3"

    各インスタンスは node-role.eks-local.amazonaws.com/control-plane で汚染されているため、コントロールプレーンインスタンスでワークロードがスケジュールされることはありません。テイントの詳細については、Kubernetes ドキュメントの「Taints and Tolerations」を参照してください。Amazon EKS はローカルクラスターの状態を継続的に監視します。セキュリティパッチや問題のあるインスタンスの修復などの自動管理アクションを実行します。ローカルクラスターがクラウドから切断されると、再接続時にクラスターが正常な状態に修復されるようアクションが実行されます。

  2. eksctl を使用してクラスターを作成した場合、このステップはスキップできます。eksctl がこのステップを完了します。新しいコンテキストを kubectl config ファイルに追加して、kubectl がクラスターと通信できるようにします。ファイルを作成し更新する手順については、「kubeconfig ファイルを作成して kubectl を EKS クラスターに接続する」を参照しください。

    aws eks update-kubeconfig --region region-code --name my-cluster

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

    Added new context arn:aws:eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config
  3. ローカルクラスターの Kubernetes API サーバーに接続するには、サブネットのローカルゲートウェイにアクセスするか、VPC 内から接続します。Outpost ラックをオンプレミスネットワークに接続する方法の詳細については、「AWS Outposts ユーザーガイド」の「How local gateways for racks work」(ラックのローカルゲートウェイの仕組み) を参照してください。ダイレクト VPC ルーティングを使用しており、Outpost サブネットにローカルゲートウェイへのルートがある場合、Kubernetes コントロールプレーンインスタンスのプライベート IP アドレスがローカルネットワークを介して自動的にブロードキャストされます。ローカルクラスターの Kubernetes API サーバーエンドポイントは Amazon Route 53 (Route 53) でホストされます。API サービスエンドポイントは、パブリック DNS サーバーによって Kubernetes API サーバーのプライベート IP アドレスに解決されます。

    ローカルクラスターの Kubernetes コントロールプレーンインスタンスは、クラスターのライフサイクルを通じて変更されない固定プライベート IP アドレスを持つ静的なエラスティックネットワークインターフェイスで構成されます。Kubernetes API サーバーとやり取りするマシンは、ネットワーク接続が切断されている間は Route 53 に接続できない場合があります。このような場合は、操作の継続性を確保するために、静的プライベート IP アドレスを使用して /etc/hosts を構成することをお勧めします。また、ローカル DNS サーバーを設定して Outpost に接続することもお勧めします。詳細については、「AWS Outposts ドキュメント」を参照してください。次のコマンドを実行して、クラスターとの通信が確立されていることを確認します。

    kubectl get svc

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

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h
  4. (オプション) AWS Cloud から切断された状態のときにローカルクラスターへの認証をテストします。手順については、AWS Outposts でローカル Amazon EKS クラスターを準備して、ネットワークの切断に備える を参照してください。

内部リソース

Amazon EKS はクラスターで次のリソースを作成します。リソースは、Amazon EKS 内部で使用するためのものです。クラスターが適切に機能しなくなるため、これらのリソースは編集または変更しないでください。

  • 次のミラーポッド:

    • aws-iam-authenticator-node-hostname

    • eks-certificates-controller-node-hostname

    • etcd-node-hostname

    • kube-apiserver-node-hostname

    • kube-controller-manager-node-hostname

    • kube-scheduler-node-hostname

  • 次のセルフマネージド型アドオン:

    • kube-system/coredns

    • kube-system/ kube-proxy (最初のノードを追加するまで作成されません)

    • kube-system/aws-node (最初のノードを追加するまで作成されません)。ローカルクラスターは、クラスターネットワークに Amazon VPC CNI plugin for Kubernetes プラグインを使用します。コントロールプレーンインスタンス (名前が aws-node-controlplane-* のポッド) の設定を変更しないでください。プラグインが新しいネットワークインターフェイスを作成したときに、デフォルト値を変更できる設定変数があります。詳細については、GitHub のドキュメントを参照してください。

  • 次のサービス:

    • default/kubernetes

    • kube-system/kube-dns

  • eks.system という名前の PodSecurityPolicy

  • eks:system:podsecuritypolicy という名前の ClusterRole

  • eks:system という名前の ClusterRoleBinding

  • デフォルトの PodSecurityPolicy

  • クラスターセキュリティグループに加えて、Amazon EKS は eks-local-internal-do-not-use-or-edit-cluster-name-uniqueid という名前の AWS アカウントにセキュリティグループを作成します。このセキュリティグループにより、コントロールプレーンインスタンスで実行されている Kubernetes コンポーネント間のトラフィックが自由に流れるようになります。

推奨される次の手順は以下の通りです。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.