ポッドネットワーキング (CNI) - Amazon EKS

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

ポッドネットワーキング (CNI)

Amazon EKS は、Kubernetes 用の Amazon VPC コンテナネットワークインターフェイス (CNI) プラグインを使用したネイティブ VPC ネットワーキングをサポートしています。このプラグインを使用すると、Kubernetes ポッドは VPC ネットワークと同じ IP アドレスをポッド内に持つことができます。プラグインは、GitHub で管理されているオープンソースプロジェクトです。 詳細については、amazon-vpc-cni-k8s および Proposal: を参照してください。 の CNI plugin for Kubernetes networking over AWS VPCGitHub。 Amazon VPC CNI プラグインは、Amazon EKS の AWS およびセルフマネージド型 Kubernetes クラスターでの使用が完全にサポートされています。

注記

Kubernetes では、設定可能なネットワークセットアップに Container Networking Interface (CNI) を使用できます。Amazon VPC CNI プラグインは、すべてのユースケースで要件を満たせない場合があります。Amazon EKS では、商用サポートオプション付きの代替 CNI ソリューションを提供するパートナーネットワークが維持されます。詳細については、「互換性のある代替 CNI プラグイン」を参照してください。

ノードを作成すると、1 つのネットワークインターフェイスがあります。Amazon EKSすべての Amazon EC2 インスタンスタイプは、複数のネットワークインターフェイスをサポートします。インスタンスの作成時にインスタンスにアタッチされるネットワークインターフェイスは、プライマリネットワークインターフェイスと呼ばれます。インスタンスにアタッチされる追加のネットワークインターフェイスは、セカンダリネットワークインターフェイスと呼ばれます。各ネットワークインターフェイスに複数のプライベート IP アドレスを割り当てることができます。プライベート IP アドレスの 1 つはプライマリ IP アドレスであり、ネットワークインターフェイスに割り当てられた他のすべてのアドレスはセカンダリ IP アドレスです。ネットワークインターフェイスの詳細については、https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html の「Elastic network interfacesLinux インスタンス用 Amazon EC2 ユーザーガイド」を参照してください。各ネットワークインターフェイスでサポートされているネットワークインターフェイスとプライベート IP アドレスの数の詳細については、https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI の「インスタンスタイプごとのネットワークインターフェイスごとの IP アドレスLinux インスタンス用 Amazon EC2 ユーザーガイド」を参照してください。たとえば、m5.large インスタンスタイプは、3 つのネットワークインターフェイスと、各ネットワークインターフェイス用の 10 個のプライベート IP アドレスをサポートします。

Kubernetes の Amazon VPC コンテナネットワークインターフェイス (CNI) プラグインは、Amazon EC2 という名前のデーモンセットの各 aws-node ノードと共にデプロイされます。 このプラグインは 2 つの主なコンポーネントで構成されています。

  • L-IPAM デーモン – ネットワークインターフェイスの作成と Amazon EC2 インスタンスへのネットワークインターフェイスのアタッチ、ネットワークインターフェイスへのセカンダリ IP アドレスの割り当て、スケジュールされたときに Kubernetes ポッドに割り当てる各ノードでの IP アドレスのウォームプールの維持を行います。ノードで実行されているポッドの数が、単一のネットワークインターフェイスに割り当てることができるアドレスの数を超えると、プラグインは、インスタンスのネットワークインターフェイスの最大数がまだアタッチされていない限り、新しいネットワークインターフェイスの割り当てを開始します。プラグインが新しいネットワークインターフェイスを作成するときに、デフォルト値を変更できる設定変数があります。詳細については、 の「WARM_ENI_TARGETWARM_IP_TARGET」、「MINIMUM_IP_TARGET」、および「GitHub」を参照してください。

    デプロイする各ポッドには、インスタンスにアタッチされたネットワークインターフェイスの 1 つからセカンダリプライベート IP アドレスが 1 つ割り当てられます。以前は、m5.large インスタンスがネットワークインターフェイスごとに 3 つのネットワークインターフェイスと 10 のプライベート IP アドレスをサポートすることを説明していました。インスタンスが 30 個のプライベート IP アドレスをサポートしている場合でも、30 個のポッドをそのノードにデプロイすることはできません。m5.largeノードにデプロイできるポッドの数を決定するには、次の式を使用します。

    (Number of network interfaces for the instance type × (the number of IP addressess per network interface - 1)) + 2

    この式を使用すると、m5.large インスタンスタイプは、最大 29 のポッドをサポートできます。各インスタンスタイプでサポートされるポッドの最大数のリストについては、 の「eni-max-pods.txtGitHub」を参照してください。 システムポッドは、最大ポッド数にカウントされます。たとえば、CNI プラグインと kube-proxy ポッドはクラスター内のすべてのノードで実行されるため、追加ポッドは 29 ではなく m5.large インスタンスに 27 つだけデプロイできます。さらに、CoreDNS は、クラスター内の一部のノードで実行されます。これにより、実行されるノードに対して最大ポッド数が別のポッドだけ減ります。

    デフォルトでは、ノードにデプロイされたすべてのポッドに同じセキュリティグループが割り当てられ、インスタンスのネットワークインターフェイスの 1 つが接続されているサブネットに割り当てられた CIDR ブロックからプライベート IP アドレスが割り当てられます。を設定することで、プライマリネットワークインターフェイスの接続先のサブネットとは異なる CIDR ブロックから IP アドレスを割り当てることができます。CNI カスタムネットワークCNI カスタムネットワークを使用して、ノードのすべてのポッドを同じセキュリティグループに割り当てることもできます。すべてのポッドに割り当てられたセキュリティグループは、プライマリネットワークインターフェイスに割り当てられたセキュリティグループとは異なる場合があります。ポッドのセキュリティグループを使用して、多くの Amazon EC2 インスタンスタイプにデプロイされたポッドに一意のセキュリティグループを割り当てることができます。詳細については、「ポッドのセキュリティグループ」を参照してください。

  • CNI プラグイン – ホストネットワークの接続 (ネットワークインターフェイスと仮想イーサネットペアの設定など) とポッド名前空間への正しいネットワークインターフェイスの追加を行います。

重要

バージョン 1.7.0 以降の CNI プラグインを使用していて、カスタムポッドセキュリティポリシーを、デーモンセットによってデプロイされた aws-node ポッドに使用される aws-node Kubernetes サービスアカウントに割り当てる場合、ポリシーの NET_ADMINallowedCapabilities および hostNetwork: true に、ポリシーの privileged: true および spec とともにポリシーに含まれる必要があります。 詳細については、「ポッドのセキュリティポリシー」を参照してください。