VPC 設定 - Eksctl ユーザーガイド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

VPC 設定

クラスター専用 VPC

デフォルトではeksctl create cluster、クラスター専用の VPC が作成されます。これは、セキュリティなど、さまざまな理由で既存のリソースとの干渉を避けるために行われますが、既存の VPC 内のすべての設定を検出するのは難しいためでもあります。

  • で使用されるデフォルトの VPC CIDR eksctlは です192.168.0.0/16

    • 8 (/19) サブネット (プライベート 3 つ、パブリック 3 つ、リザーブド 2 つ) に分割されます。

  • 初期ノードグループはパブリックサブネットに作成されます。

  • --allow-ssh が指定されていない限り、SSH アクセスは無効になります。

  • デフォルトでは、ノードグループはポート 1025~65535 のコントロールプレーンセキュリティグループからのインバウンドトラフィックを許可します。

注記

eksctl us-east-1 では、デフォルトで 2 つのパブリックサブネットと 2 つのプライベートサブネットのみが作成されます。

VPC CIDR の変更

別の VPC とのピアリングを設定する必要がある場合、または単により大きい範囲またはより小さい範囲の IPs が必要な場合は、 --vpc-cidrフラグを使用して変更できます。AWS VPC での使用が許可されている CIDR ブロックの選択に関するガイドについては、AWS ドキュメントを参照してください。

IPv6 クラスターを作成する場合は、cluser 設定ファイルVPC.IPv6Cidrで を設定できます。この設定は CLI フラグではなく、設定ファイルでのみ行われます。

IPv6 IP アドレスブロックを所有している場合は、独自の IPv6 プールを持ち込むこともできます。独自のプールのインポート方法については、「独自の IP アドレス (BYOIP) を Amazon EC2 に持ち込む」を参照してください。次に、cluser 設定ファイルの VPC.IPv6Cidr を使用して Eksctl を設定します。

既存の VPC を使用する: kops と共有

kops が管理する既存の Kubernetes クラスターの VPC を使用できます。この機能は、移行やクラスターピアリングを容易にするために提供されています。

kops を使用して以前にクラスターを作成したことがある場合は、次のようなコマンドを使用します。

export KOPS_STATE_STORE=s3://kops
kops create cluster cluster-1.k8s.local --zones=us-west-2c,us-west-2b,us-west-2a --networking=weave --yes

同じ VPC サブネットを使用して、同じ AZs に EKS クラスターを作成できます (注: 少なくとも 2 つの AZs/サブネットが必要です)。

eksctl create cluster --name=cluster-2 --region=us-west-2 --vpc-from-kops-cluster=cluster-1.k8s.local

既存の VPC を使用する: その他のカスタム設定

eksctl は、カスタム VPC およびサブネットトポロジーの柔軟性を提供しますが、完全ではありません。

--vpc-private-subnets および --vpc-public-subnetsフラグを使用してプライベートサブネットまたはパブリックサブネットを指定することで、既存の VPC を使用できます。設定が異なるため、サブネットが実際にプライベートかパブリックかを検証する簡単な方法がないため、使用するサブネットが正しく分類されていることを確認するのはお客様次第です。

これらのフラグを指定すると、 eksctl create cluster は自動的に VPC ID を決定しますが、ルーティングテーブルやインターネット/NAT ゲートウェイなどの他のリソースは作成されません。ただし、最初のノードグループとコントロールプレーン専用のセキュリティグループが作成されます。

異なる AZs、この条件は EKS によってチェックされます。既存の VPC を使用する場合、以下の要件は EKS または Eksctl によって強制またはチェックされず、EKS によってクラスターが作成されます。クラスターの一部の基本機能は、これらの要件なしで動作します。(例えば、タグ付けは厳密に必要ではなく、サブネットにタグを設定せずに機能クラスターを作成できることがテストで示されていますが、これが常に保持される保証はなく、タグ付けが推奨されます)。

標準要件:

  • 指定されたすべてのサブネットは、IP のIPs内にある必要があります。

  • 必要に応じて、十分な数の IP アドレスが使用可能

  • ニーズに基づく十分な数のサブネット (最小 2)

  • サブネットには、少なくとも次のタグが付けられます。

    • kubernetes.io/cluster/<name> タグを sharedまたは に設定 owned

    • kubernetes.io/role/internal-elb プライベートサブネット1の タグを に設定

    • kubernetes.io/role/elb パブリックサブネット1の タグを に設定

  • 正しく設定されたインターネットゲートウェイや NAT ゲートウェイ

  • ルーティングテーブルに正しいエントリがあり、ネットワークが機能している

  • NEW: すべてのパブリックサブネットで プロパティMapPublicIpOnLaunchが有効になっている必要があります (AWS コンソールAuto-assign public IPv4 address内)。マネージド型ノードグループと Fargate はパブリック IPv4 アドレスを割り当てないため、 プロパティをサブネットに設定する必要があります。

EKS または Kubernetes によって課されるその他の要件があり、要件やレコメンデーションup-to-date状態に保ち、必要に応じて実装するか、可能な場合は実装するかはお客様次第です。

によって適用されるデフォルトのセキュリティグループ設定はeksctl、他のセキュリティグループのリソースとアクセスを共有するのに十分である場合とそうでない場合があります。セキュリティグループの進入/退出ルールを変更する場合は、別のツールを使用して変更を自動化するか、EC2 コンソールを使用して変更を行う必要があります。

疑わしい場合は、カスタム VPC を使用しないでください。--vpc-* フラグeksctl create clusterなしで を使用すると、常に完全に機能する専用 VPC でクラスターが設定されます。

2 つのプライベートサブネットと 2 つのパブリックサブネットを持つカスタム VPC を使用してクラスターを作成します。

eksctl create cluster \
  --vpc-private-subnets=subnet-0ff156e0c4a6d300c,subnet-0426fb4a607393184 \
  --vpc-public-subnets=subnet-0153e560b3129a696,subnet-009fa0199ec203c37

または、以下の同等の設定ファイルを使用します。

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-test region: us-west-2 vpc: id: "vpc-11111" subnets: private: us-west-2a: id: "subnet-0ff156e0c4a6d300c" us-west-2c: id: "subnet-0426fb4a607393184" public: us-west-2a: id: "subnet-0153e560b3129a696" us-west-2c: id: "subnet-009fa0199ec203c37" nodeGroups: - name: ng-1

3 つのプライベートサブネットを持つカスタム VPC を使用してクラスターを作成し、初期ノードグループにそれらのサブネットを使用させます。

eksctl create cluster \
  --vpc-private-subnets=subnet-0ff156e0c4a6d300c,subnet-0549cdab573695c03,subnet-0426fb4a607393184 \
  --node-private-networking

または、以下の同等の設定ファイルを使用します。

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-test region: us-west-2 vpc: id: "vpc-11111" subnets: private: us-west-2d: id: "subnet-0ff156e0c4a6d300c" us-west-2c: id: "subnet-0549cdab573695c03" us-west-2a: id: "subnet-0426fb4a607393184" nodeGroups: - name: ng-1 privateNetworking: true

カスタム VPC 4x パブリックサブネットを使用してクラスターを作成します。

eksctl create cluster \
  --vpc-public-subnets=subnet-0153e560b3129a696,subnet-0cc9c5aebe75083fd,subnet-009fa0199ec203c37,subnet-018fa0176ba320e45
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-test region: us-west-2 vpc: id: "vpc-11111" subnets: public: us-west-2d: id: "subnet-0153e560b3129a696" us-west-2c: id: "subnet-0cc9c5aebe75083fd" us-west-2a: id: "subnet-009fa0199ec203c37" us-west-2b: id: "subnet-018fa0176ba320e45" nodeGroups: - name: ng-1

その他の例は、リポジトリの examplesフォルダにあります。

カスタム共有ノードセキュリティグループ

eksctl は、アンマネージドノードとクラスターコントロールプレーンおよびマネージドノード間の通信を許可する共有ノードセキュリティグループを作成および管理します。

代わりに独自のカスタムセキュリティグループを指定する場合は、設定ファイルの sharedNodeSecurityGroupフィールドを上書きできます。

vpc: sharedNodeSecurityGroup: sg-0123456789

デフォルトでは、 eksctlはクラスターを作成するときに、このセキュリティグループにルールを追加して、EKS が作成するデフォルトのクラスターセキュリティグループとの間の通信を許可します。デフォルトのクラスターセキュリティグループは、EKS コントロールプレーンとマネージド型ノードグループの両方で使用されます。

セキュリティグループルールを自分で管理する場合は、設定ファイルfalsemanageSharedNodeSecurityGroupRulesを に設定することで、 がルールを作成eksctlできない場合があります。

vpc: sharedNodeSecurityGroup: sg-0123456789 manageSharedNodeSecurityGroupRules: false

NAT Gateway

クラスターの NAT ゲートウェイはDisable、、 Single (デフォルト)、または に設定できますHighlyAvailableHighlyAvailable オプションは、リージョンの各アベイラビリティーゾーンに NAT ゲートウェイをデプロイするため、AZ がダウンしても、他の AZs のノードは引き続きインターネットと通信できます。

これは、CLI --vpc-nat-mode フラグまたは以下の例のようにクラスター設定ファイルで指定できます。

vpc: nat: gateway: HighlyAvailable # other options: Disable, Single (default)

完全な例については、こちらを参照してください。

注記

NAT ゲートウェイの指定は、クラスターの作成時にのみサポートされます。クラスターのアップグレード中は変更されません。