このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
Amazon EKS クラスターの Amazon VPC を作成する
Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。この仮想ネットワークは、お客様自身のデータセンターで運用されている従来のネットワークによく似ています。ただし、Amazon Web Services のスケーラブルなインフラストラクチャを使用できるというメリットがあります。本番用に使う Amazon EKS クラスターをデプロイする前に、Amazon VPC サービスを十分に理解しておくことをお勧めします。詳細については、Amazon VPC ユーザーガイドを参照してください。
Amazon EKS クラスター、ノード、および Kubernetes リソースが VPC にデプロイされます。Amazon EKS で既存の VPC を使用する場合は、その VPC が「VPC とサブネットの Amazon EKS ネットワーキング要件を表示する」に記載されている要件を満たしている必要があります。このトピックでは、Amazon EKS に用意されている AWS CloudFormation テンプレートを使用して Amazon EKS 要件を満たす VPC を作成する方法について説明します。テンプレートをデプロイすると、テンプレートによって作成されたリソースを表示して、作成されたリソースとそれらのリソースの設定を正確に把握できます。ハイブリッドノードを使用している場合、VPC のルートテーブルにオンプレミスネットワークへのルートが含まれている必要があります。ハイブリッドノードのネットワーク要件の詳細については、「ハイブリッドノード用のネットワークを準備する」を参照してください。
前提条件
Amazon EKS 用の VPC を作成するには、Amazon VPC リソースを作成するのに必要な IAM アクセス許可が必要です。これらのリソースは、VPC、サブネット、セキュリティグループ、ルートテーブルとルート、およびインターネットと NAT ゲートウェイです。詳細については、「Amazon VPC ユーザーガイド」の「パブリックサブネットを持つ VPC を作成するポリシー例」を参照してください。完全なリストについては、「サービス認可リファレンス」の「アクション」を参照してください。
パブリックサブネットとプライベートサブネット、パブリックサブネットのみ、またはプライベートサブネットのみで、VPC を作成できます。
パブリックサブネットおよびプライベートサブネット
この VPC には、2 つのパブリックサブネットと 2 つのプライベート サブネットがあります。パブリックサブネットの関連付けられているルートテーブルには、インターネットゲートウェイへのルートが含まれています。一方、プライベートサブネットのルートテーブルには、インターネットゲートウェイへのルートがありません。1 つのパブリックサブネットと 1 つのプライベートサブネットが同じアベイラビリティーゾーンにデプロイされます。他のパブリックサブネットとプライベートサブネットは、同じ AWS リージョン内の 2 番目のアベイラビリティーゾーンにデプロイされます。ほとんどのデプロイにこのオプションをお勧めします。
このオプションを使用すると、プライベートサブネットにノードをデプロイできます。このオプションを使用すると、Kubernetes は、プライベートサブネット内のノードで実行される Pods へのトラフィックを負荷分散できるパブリックサブネットにロードバランサーをデプロイできます。パブリック IPv4
アドレスは、パブリックサブネットにデプロイされたノードに自動的に割り当てられます。一方、プライベートサブネットにデプロイされたノードに対しては、パブリック IPv4
アドレスは割り当てられません。
また、パブリックサブネットおよびプライベートサブネットに置かれたノードに対し、IPv6
アドレスを割り当てることもできます。プライベートサブネット内のノードは、クラスターや他の AWS サービスとの通信が可能です。Pods は、各アベイラビリティーゾーンにデプロイされた NAT ゲートウェイ (IPv4
アドレスを使用) または送信専用インターネットゲートウェイ (IPv6
アドレスを使用) を介して、インターネットへの通信が可能です。クラスターまたはノード以外のソースからのすべてのインバウンドトラフィックを拒否するが、すべてのアウトバウンドトラフィックを許可するルールを持つセキュリティグループがデプロイされます。Kubernetes がサブネットにロードバランサーをデプロイできるように、サブネットにはタグが付けられています。
-
AWS CloudFormation コンソール
を開きます。 -
ナビゲーションバーで、Amazon EKS をサポートする AWS リージョンを選択します。
-
[スタックの作成] を選択し、[新しいリソースの使用 (標準)] を選択します。
-
[Prerequisite - Prepare template] (前提条件 – テンプレートの準備) の下で、[Template is ready] (テンプレートの準備完了) がオンになっていることを確認した上で、[Specify template] (テンプレートの指定) の下で、[Amazon S3 URL] を選択します。
-
IPv4
のみをサポートする VPC、またはIPv4
とIPv6
をサポートする VPC を作成できます。下記の URL の 1 つを [Amazon S3 URL] の下にあるテキスト領域に貼り付けて、[Next] (次へ) をクリックします。-
IPv4
-
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
-
IPv4
およびIPv6
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml
-
[Specify stack details] (スタック詳細の指定) ページで、パラメータを入力し、[Next] (次へ) を選択します。
-
スタック名: AWS CloudFormation スタックのスタック名を選択します。例えば、前のステップで使用されたテンプレート名を使用できます。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。
-
[VpcBlock]: VPC の
IPv4
CIDR 範囲を選択します。デプロイする各ノード、Pod、およびロードバランサーには、このブロックのIPv4
アドレスが割り当てられます。デフォルトのIPv4
値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。IPv6
VPC を作成する場合、IPv6
CIDR 範囲は Amazon のグローバルユニキャストアドレススペースから自動的に割り当てられます。 -
[PublicSubnet01Block]: パブリックサブネット 1 の
IPv4
CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。IPv6
VPC を作成する場合、テンプレートで指定済みブロックを使用できます。 -
[PublicSubnet02Block]: パブリックサブネット 2 の
IPv4
CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。IPv6
VPC を作成する場合、テンプレートで指定済みブロックを使用できます。 -
[PrivateSubnet01Block]: プライベートサブネット 1 の
IPv4
CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。IPv6
VPC を作成する場合、テンプレートで指定済みブロックを使用できます。 -
[PrivateSubnet02Block]: プライベートサブネット 2 の
IPv4
CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。IPv6
VPC を作成する場合、テンプレートで指定済みブロックを使用できます。
-
-
(オプション) [Configure stack options] (スタックオプションの設定) ページで、スタックリソースにタグ付けを行った上で、[Next] (次へ) をクリックします。
-
[確認] ページで [スタックの作成] を選択します。
-
スタックが作成されたら、コンソールで選択し、[Outputs] (出力) を選択します。
-
作成された VPC の [VpcId] を記録します。これは、クラスターとノードを作成するときに必要です。
-
作成されたサブネットの SubnetIds と、それらをパブリックサブネットとプライベートサブネットのどちらとして作成したかを記録します。クラスターとノードを作成するときは、これらのうち少なくとも 2 つが必要です。
-
IPv4
VPC を作成している場合、この手順をスキップしてください。IPv6
VPC を作成している場合は、テンプレートによって作成されたパブリックサブネットにおいて、IPv6
アドレスの自動割り当てオプションが有効化されている必要があります。この設定は、プライベートサブネットに対してすでに有効になっています。次の手順を完了して、設定を有効にします。-
Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
左のナビゲーションペインで [Subnets] (サブネット) を選択します。
-
パブリックサブネット (
stack-name
/SubnetPublic01 またはstack-name
/SubnetPublic02 には、public という語が含まれています) の 1 つを選択し、[Actions] (アクション)、[Edit subnet settings] (サブネット設定の編集) の順に選択します。 -
[Enable auto-assign
*IPv6
address*] ( アドレスの自動割り当てを有効にする*) チェックボックスを選択し、[Save] (保存) を選択します。 -
他のパブリックサブネットに対しても、ここまでの手順を再度実行します。
-
パブリックサブネットのみ
この VPC には、AWS リージョン内の異なるアベイラビリティーゾーンにデプロイされる 3 つのパブリックサブネットがあります。すべてのノードには自動的にパブリック IPv4
アドレスが割り当てられ、インターネットゲートウェイを介してインターネットトラフィックを送受信できます。すべてのインバウンドトラフィックを拒否し、すべてのアウトバウンドトラフィックを許可するセキュリティグループがデプロイされます。Kubernetes がサブネットにロードバランサーをデプロイできるように、サブネットにはタグが付けられています。
-
AWS CloudFormation コンソール
を開きます。 -
ナビゲーションバーで、Amazon EKS をサポートする AWS リージョンを選択します。
-
[スタックの作成] を選択し、[新しいリソースの使用 (標準)] を選択します。
-
[テンプレートの準備] の下で、[テンプレートの準備完了] が選択されていることを確認し、[テンプレートソース] の下で、[Amazon S3 URL] を選択します。
-
次の URL を [Amazon S3 URL] の下のテキスト領域に貼り付けて、[次へ] を選択します。
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
-
[Specify Details] (詳細の指定) ページで、パラメータを入力し、[Next] (次へ) を選択します。
-
スタック名: AWS CloudFormation スタックのスタック名を選択します。例えば、
amazon-eks-vpc-sample
という名前にすることができます。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。 -
[VpcBlock]: VPC の CIDR ブロックを選択します。デプロイする各ノード、Pod、およびロードバランサーには、このブロックの
IPv4
アドレスが割り当てられます。デフォルトのIPv4
値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。 -
Subnet01Block: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
Subnet02Block: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
Subnet03Block: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
-
(オプション) [オプション] ページで、スタックリソースをタグ付けします。[次へ] を選択します。
-
[Review] ページで、[Create ] を選択します。
-
スタックが作成されたら、コンソールで選択し、[Outputs] (出力) を選択します。
-
作成された VPC の [VpcId] を記録します。これは、クラスターとノードを作成するときに必要です。
-
作成されたサブネットの [SubnetIds] を記録します。クラスターとノードを作成するときは、これらのうち少なくとも 2 つが必要です。
-
(オプション) この VPC にデプロイするクラスターは、Pods と services にプライベート
IPv4
アドレスを割り当てることができます。この VPC にクラスターをデプロイし、Pods と services にプライベートIPv6
アドレスを割り当てる場合は、VPC、サブネット、ルートテーブル、およびセキュリティグループを更新します。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。Amazon EKS では、サブネットにおいて、IPv6
アドレスのAuto-assign
オプションが有効化されている必要があります。デフォルトでは、このオプションは無効となっています。
プライベートサブネットのみ
この VPC には、AWS リージョン内の異なるアベイラビリティーゾーンにデプロイされる 3 つのプライベートサブネットがあります。サブネットにデプロイされたリソースはインターネットにアクセスできず、インターネットからサブネット内のリソースにアクセスすることもできません。ノードが通常アクセスする必要があるいくつかの AWS サービスの AWS PrivateLink を使用して、VPC エンドポイントがテンプレートによって作成されます。ノードにアウトバウンドインターネットアクセスが必要な場合は、VPC が作成された後で、各サブネットのアベイラビリティーゾーン内に、パブリック NAT ゲートウェイを追加できます。セキュリティグループは、サブネットにデプロイされたリソースからのトラフィックを除き、すべてのインバウンドトラフィックを拒否するように作成されます。また、セキュリティグループは、すべてのアウトバウンドトラフィックを許可します。Kubernetes がサブネットに内部ロードバランサーをデプロイできるように、サブネットにはタグが付けられています。この設定で VPC を作成する場合は、「インターネットアクセスが制限されたプライベートクラスターをデプロイする」を参照してその他の要件と考慮事項を確認してください。
-
AWS CloudFormation コンソール
を開きます。 -
ナビゲーションバーで、Amazon EKS をサポートする AWS リージョンを選択します。
-
[スタックの作成] を選択し、[新しいリソースの使用 (標準)] を選択します。
-
[テンプレートの準備] の下で、[テンプレートの準備完了] が選択されていることを確認し、[テンプレートソース] の下で、[Amazon S3 URL] を選択します。
-
次の URL を [Amazon S3 URL] の下のテキスト領域に貼り付けて、[次へ] を選択します。
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
-
[詳細の指定] ページでパラメータを入力し、[次へ] を選択します。
-
スタック名: AWS CloudFormation スタックのスタック名を選択します。例えば、
amazon-eks-fully-private-vpc
という名前にすることができます。この名前には、英数字 (大文字と小文字が区別されます) とハイフンのみを使用できます。先頭の文字は英数字である必要があります。また、100 文字より長くすることはできません。名前は、クラスターを作成する AWS リージョンおよび AWS アカウント内で一意である必要があります。 -
[VpcBlock]: VPC の CIDR ブロックを選択します。デプロイする各ノード、Pod、およびロードバランサーには、このブロックの
IPv4
アドレスが割り当てられます。デフォルトのIPv4
値で、ほとんどの実装において十分な IP アドレスを取得できますが、不足する場合はこの値を変更できます。詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネットのサイズ設定」を参照してください。VPC を作成したら、追加の CIDR ブロックを VPC に追加することもできます。 -
PrivateSubnet01Block: サブネット 1 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
PrivateSubnet02Block: サブネット 2 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
PrivateSubnet03Block: サブネット 3 の CIDR ブロックを指定します。デフォルト値は、ほとんどの実装で十分な IP アドレスを提供しますが、そうでない場合は、変更することができます。
-
-
(オプション) [オプション] ページで、スタックリソースをタグ付けします。[次へ] を選択します。
-
[Review] ページで、[Create ] を選択します。
-
スタックが作成されたら、コンソールで選択し、[Outputs] (出力) を選択します。
-
作成された VPC の [VpcId] を記録します。これは、クラスターとノードを作成するときに必要です。
-
作成されたサブネットの [SubnetIds] を記録します。クラスターとノードを作成するときは、これらのうち少なくとも 2 つが必要です。
-
(オプション) この VPC にデプロイするクラスターは、Pods と services にプライベート
IPv4
アドレスを割り当てることができます。この VPC にクラスターをデプロイし、Pods と services にプライベートIPv6
アドレスを割り当てる場合は、VPC、サブネット、ルートテーブル、およびセキュリティグループを更新します。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。Amazon EKS は、サブネットでAuto-assign IPv6
アドレスオプションが有効になっている必要があります (デフォルトでは無効)。