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

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

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

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

注記

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

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

Kubernetes 用の Amazon VPC Container Network Interface (CNI) プラグインは、 という名前のデーモンセットの各Amazon EC2ノードでデプロイされますaws-node。このプラグインは 2 つの主なコンポーネントで構成されています。

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

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

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

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

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

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

重要

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