このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
このトピックでは、AWS Cloud にデプロイされているが、アウトバウンドインターネットアクセスがない Amazon EKS クラスターをデプロイする方法について説明します。AWS Outposts にローカルクラスターがある場合、このトピックの代わりに「AWS アウトポスト で Amazon Linux ノードを作成する」を参照してください。
Amazon EKS でのネットワークに詳しくない場合は、「De-mystifying cluster networking for Amazon EKS worker nodes (Amazon EKS ワーカーノードのクラスターネットワークを解明する)
-
クラスターは VPC 内のコンテナレジストリからイメージを取得する必要があります。VPC 内に Amazon Elastic Container Registry を作成し、そこにコンテナイメージをコピーしてノードの取得元にすることができます。詳細については「あるリポジトリから別のリポジトリにコンテナイメージをコピーする」を参照してください。
-
クラスターでは、エンドポイントのプライベートアクセスが有効になる必要があります。これは、ノードをクラスターエンドポイントに登録するために必要です。エンドポイントのパブリックアクセスはオプションです。詳細については「クラスター API サーバーエンドポイントへのネットワークアクセスを制御する」を参照してください。
-
セルフマネージド型 Linux ノードおよび Windows ノードには、起動する前に次のブートストラップ引数を含める必要があります。これらの引数は Amazon EKS のイントロスペクションをバイパスするため、VPC 内からの Amazon EKS API へのアクセスは不要です。
-
次のコマンドを使用して、クラスターのエンドポイントの値を確認します。
マイクラスター
の部分は自分のクラスター名に置き換えます。aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text
出力例は次のとおりです。
https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
-
次のコマンドを使用して、クラスターの認証機関の値を確認します。
マイクラスター
の部分は自分のクラスター名に置き換えます。aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text
返された出力は長い文字です。
-
次のコマンドの
cluster-endpoint
およびcertificate-authority
を前のコマンドで返された出力の値に置き換えます。セルフマネージド型ノードを起動する際にブートストラップ引数を指定する方法の詳細については、「セルフマネージド Amazon Linux ノードを作成する」および「セルフマネージド Microsoft Windows ノードの作成」を参照してください。-
Linux ノードの場合:
--apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority
その他の引数については、GitHub の「ブートストラップのスクリプト
」を参照してください。 -
Windows ノードの場合:
注記
カスタムサービス CIDR を使用している場合は
-ServiceCIDR
パラメータを使用して指定する必要があります。そうしないと、クラスター内の Pod の DNS 解決が失敗します。-APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority
その他の引数については「ブートストラップスクリプトの設定パラメータ」を参照してください。
-
-
-
クラスターの
aws-auth
ConfigMap
は VPC 内から作成する必要があります。エントリの作成とaws-auth
ConfigMap
への追加の詳細については、ターミナルでeksctl create iamidentitymapping --help
と入力してください。サーバーにConfigMap
が存在しない場合は、このコマンドを使用して ID マッピングを追加したときにeksctl
によって作成されます。 -
サービスアカウントの IAM ロールで設定された Pod は、AWS Security Token Service (AWS STS) API コールから認証情報を取得します。アウトバウンドインターネットアクセスがない場合は、VPC 内で AWS STS VPC エンドポイントを作成して使用する必要があります。ほとんどの AWS
v1
SDK は、AWS STS VPC エンドポイントを使用しないグローバル AWS STS エンドポイント (sts.amazonaws.com
) をデフォルトで使用します。AWS STS VPC エンドポイントを使用するには、リージョンの AWS STS エンドポイント (sts.
) を使用するように SDK を構成する必要がある場合があります。詳細については「サービスアカウントの AWS Security Token Service エンドポイントを設定する」を参照してください。region-code
.amazonaws.com -
Pod がアクセスする必要のあるすべての AWS サービスについて、クラスターの VPC サブネットに VPC インターフェイスエンドポイントが必要です。詳細については、「インターフェイス VPC エンドポイントを使用して AWS サービスにアクセスする」を参照してください。下表には、一般的に使用されるサービスとエンドポイントがリスト表示されています。エンドポイントの詳細なリストについては、AWS PrivateLink ガイドの「AWS PrivateLink と連携する AWS サービス」を参照してください。
VPC エンドポイントのために [プライベート DNS 名を有効にする] ことをお勧めします。これにより、ワークロードはパブリック AWS サービスエンドポイントを問題なく引き続き使用できます。
サービス エンドポイント Amazon EC2
com.amazonaws.
region-code
.ec2Amazon Elastic Container Registry (コンテナイメージの取得用)
com.amazonaws.
region-code
.ecr.api、com.amazonaws.region-code
.ecr.dkr、および com.amazonaws.region-code
.s3Application Load Balancerおよび Network Load Balancer
com.amazonaws.
region-code
.elasticloadbalancingAWS X-Ray
com.amazonaws.
region-code
.xrayAmazon CloudWatch Logs
com.amazonaws.
region-code
.logsAWS Security Token Service (サービスアカウントに IAM ロールを使用している場合に必要)
com.amazonaws.
region-code
.stsAmazon EKS Auth
com.amazonaws.
region-code
.eks-authAmazon EKS
com.amazonaws.
region-code
.eks -
セルフマネージド型ノードはすべて、必要な VPC インターフェイスエンドポイントを持つサブネットにデプロイする必要があります。マネージド型ノードグループを作成する場合には、VPC インターフェイスエンドポイントのセキュリティグループでサブネットの CIDR を許可するか、ノードのセキュリティグループを作成し VPC インターフェイスエンドポイントのセキュリティグループに追加する必要があります。
-
Pod で Amazon EFS ボリュームを使用する場合、「Store an elastic file system with Amazon EFS」をデプロイする前に、Amazon EKS クラスターと同じ AWS リージョンを使用するように、ドライバーの kustomization.yaml
ファイルを変更して、コンテナイメージを設定する必要があります。 -
Route 53 は AWS PrivateLink をサポートしていません。プライベート Amazon EKS クラスターから Route 53 DNS レコードを管理することはできません。これは Kubernetes external-dns
に影響します。 -
EKS 最適化 AMI を使用した場合は、上記の表に挙げた
ec2
エンドポイントを有効にする必要があります。あるいは、ノードの DNS 名を手動で設定することもできます。最適化 AMI では、EC2 API を使用して、ノードの DNS 名を自動的に設定します。 -
AWS Load Balancer Controller を使用して、AWS Application Load Balancer (ALB) および Network Load Balancer をプライベートクラスターにデプロイできます。デプロイするときは、コマンドラインフラグ
を使用して、 enable-shield
、enable-waf
、およびenable-wafv2
を false に設定する必要があります。Ingress オブジェクトのホスト名を使用した証明書の検出は、サポートされていません。これは、コントローラーが VPC インターフェイスエンドポイントを持たない AWS Certificate Manager に到達する必要があるからです。 このコントローラーでは、Fargate で必要な IP ターゲットを持つネットワークロードバランサをサポートします。詳細についてはApplication Load Balancer を使用してアプリケーションと HTTP トラフィックをルーティングするおよびネットワークロードバランサーを作成するを参照してください。
-
Cluster Autoscaler
がサポートされています。クラスター自動スケーラー Pod をデプロイする場合は、コマンドラインに --aws-use-static-instance-list=true
が含まれていることを確認してください。詳細については、GitHub で「静的インスタンス・リストを使用」を参照してください。ワーカーノード VPC には、AWS STS VPC エンドポイントと自動スケーリング VPC エンドポイントも含める必要があります。 -
一部のコンテナソフトウェア製品では、AWS Marketplace Metering Service にアクセスする API コールを使用して、使用状況をモニタリングします。プライベートクラスターではこれらの呼び出しが許可されないため、これらのコンテナタイプはプライベートクラスターには使用できません。