rights reserved. Amazon Confidential and Trademark. Kubernetes クラスタのネットワーク • Kubernetes のネットワークモデル Ø Kubernetes クラスタのネットワーク実装に関する要件が定められている (参考) Ø Pod は クラスタ内のすべての Pod に対して NAT せずに通信することができる etc. • このネットワークモデルの要件を満たす形であればその実装方法は自由で良い 5 ・・・ cluster Node Node NIC NIC Pod Pod Pod Pod NIC NIC NIC NIC
rights reserved. Amazon Confidential and Trademark. Amazon EC2 の ENI に関するスケーラビリティ • Amazon EC2 の各インスタンスタイプ毎にアタッチできる ENI 数と ENI あたりの IP アドレス数が決まっている (参考) Ø 例:m6i.large (ENI:3 個、IP per ENI:10 個)、t3.small (ENI:3 個、IP per ENI:4 個) • Amazon VPC CNI プラグインでは各 ENI に割り当てられるセカンダリ IP を 利用するため、1 台のワーカーノードで起動できる Pod 数もこの制限の 影響を受ける Ø CPU や Memory リソースだけではなく、ネットワーク観点のスケーラビリティも考慮して ワーカーノード数の設計などをする必要がある 14 t3.small Primary IP * 1 Secondary IP * 3 = 4 IP Primary IP * 1 Secondary IP * 3 = 4 IP Primary IP * 1 Secondary IP * 3 = 4 IP
rights reserved. Amazon Confidential and Trademark. Pod 起動を高速化するためのウォームアップ • Pod 起動のリードタイムを短縮するため、Amazon VPC CNI プラグインは予め ワーカーノードの ENI や セカンダリIP をウォームプールとして割り当て維持する Ø 各オプションによりどのような戦略で ENI やセカンダリ IP の割り当てを行うか設定可能 (後述) Ø WARM_ENI_TARGET / WARM_IP_TARGET & MINIMUM_IP_TARGET / WARM_PREFIX_TARGET • ウォームプールとして確保する IP アドレス数による、IP アドレス枯渇リスクや EC2 API 呼び出しのスロットリングリスクは 1 つのトレードオフの要素 (後述) Ø 自らの環境に合わせてウォームアップ関連のオプションを調整することで最適化ができる 19 ENI 作成 / IP 割り当て Pod NIC 作成 / IP 関連付け Pod 起動 ENI 作成 / IP 割り当て Pod NIC 作成 / IP 関連付け Pod 起動 Skip! ウォームプールを利用しない場合、 Pod 作成毎に ENI 作成/割り当て、IP 割り当てなど を AWS API 経由で実行する必要がある ウォームプールを利用する場合、 予め割り当てした IP アドレスを利用するだけで良いため、 AWS API の呼び出しなどが必要ない
rights reserved. Amazon Confidential and Trademark. Pod 起動を高速化するためのウォームアップ • ウォームプールとして確保する IP アドレス数による、IP アドレス枯渇リスクや EC2 API 呼び出しのスロットリングリスクのトレードオフの関係性 20 ウォームプールとして IP アドレスを 確保しすぎた時のリスク ウォームプールとして IP アドレスを 十分に確保しない時のリスク EC2 (EKS Worker Node) ・・・ IP IP IP IP IP IP IP IP IP IP Amazon ELB Amazon RDS ・・・ IP IP Compute Subnet 例) ウォームプールの IP (Pod にはまだ関連されていない状態) として大量にサブネット内の IP が確保されてしまい、 サブネットの IP が枯渇して他サービスに IP アサイン できなくなるリスクにつながる EC2 (EKS Worker Node) IP IP Compute Subnet 例) Pod が作成/削除される毎に AWS API の呼び出しを行い IP の割り当てや割り当て解除を行う必要があるため、 Pod の作成/削除が頻繁だと AWS API コールも増え、 API 呼び出しのストットリング発生リスクに繋がる ・・・ 1. Create new Pod IP 2. Assign New IP to ENI