情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

KubernetesのNW高速化(前編) ~高速化技術とクラウド 第11回~

DockerやKubernetesをはじめとしたコンテナ・コンテナオーケストレーション技術が急速に普及し、ネットワークの高速化が重要な課題となっています。本記事では、Kubernetesネットワークの性能課題とその背景を解説します。

NTTテクノクロスの山下です。

近年、IT業界ではマイクロサービスアーキテクチャの普及により、アプリケーションの開発・運用が大きく変化しています。これに伴い、Kubernetesをはじめとしたコンテナ技術が急速に普及し、ネットワークの高速化が重要な課題となっています。

本編では、まず「ベアメタル環境からコンテナ環境への移行の流れ」と、その背景にある「24時間365日稼働」「大量トラフィックの増加」という課題を整理し、KubernetesのネットワークモデルやCNI(Container Network Interface)について技術的な詳細と具体例を交えて解説します。

ベアメタルからコンテナへの流れと背景

従来はベアメタル環境での運用が主流でしたが、柔軟性に欠ける一方で、仮想マシン(VM)環境は柔軟性はあるものの、ハイパーバイザーによるオーバーヘッドが性能面で課題となっていました。こうした中、コンテナ技術はベアメタルの高性能とVMの柔軟性の両方の利点を活かし、軽量かつ高速にアプリケーションを実行できる環境として注目されています。

ベアメタル環境の特徴と課題

  • 従来のベアメタル環境は、物理サーバーに直接アプリケーションをインストールして運用する形態です。高いパフォーマンスが期待できる一方で、以下のような課題があります。

    • ハードウェア依存度が高い
      • NICの種類やドライバに依存し、特定のハードウェアに最適化された設定が必要。
      • 物理構成の変更(NICの追加・交換、ケーブル配線変更など)が運用負荷を増大。
    • 柔軟性の欠如
      • サーバーの追加やリプレースに時間がかかり、スケーリングや障害時のヒーリングが困難。
    • 運用コストの増大
      • 24時間365日の稼働を前提とした場合、ハードウェアの保守や監視に多大なコストがかかる。

コンテナ技術とKubernetesの登場

  • これらの課題を解決するために、コンテナ技術が注目されました。コンテナは軽量で起動が速く、リソースの効率的な利用が可能です。さらに、Kubernetesはコンテナのオーケストレーションツールとして、以下の特徴を持ちます。

    • 柔軟な運用
      • コンテナの自動スケーリングや障害時の自動復旧(ヒーリング)が可能。
    • リソースの効率的な利用
      • 複数のコンテナを同一ホストで効率的に管理。
    • クラウドネイティブな設計
      • マイクロサービスの通信を効率的に管理し、開発・運用の高速化を支援。

24時間運転と大量トラフィックの増加

  • 現代のサービスは24時間365日稼働が求められ、トラフィックも爆発的に増加しています。例えば、ECサイトのセール時や動画配信サービスのピーク時には、秒間数万〜数十万のリクエストが発生しネットワーク帯域や処理能力に大きな負荷がかかります。

    これにより、ネットワークの負荷は増大し、従来のベアメタル環境では対応が難しくなっています。コンテナ+Kubernetes環境では、柔軟なスケーリングと効率的なネットワーク管理により、これらの課題に対応可能です。

KubernetesのネットワークモデルとPod間通信

Kubernetesの基本ネットワーク構造

Kubernetesでは、アプリケーションはPodという単位で動作します。Podは1つ以上のコンテナを含み、同一Pod内のコンテナはlocalhostで通信可能です。Pod間通信は以下の特徴を持ちます。

  • 各Podに一意のIPアドレスが割り当てられる
  • Podは同一ネットワーク内で直接通信可能
  • Kubernetesのネットワークモデルはフラットで、全Podが相互に通信できることを前提としている

以下が、Pod間通信の図解イメージです。
図中のPodは複数のコンテナを含んでいる場合で記載しています。

CNI(Container Network Interface)の役割

Pod間のネットワークを実現するために、KubernetesはCNIプラグインを利用します。CNIはネットワークの設定や管理を担い、以下のようなプラグインが存在します。

プラグイン名 特徴・用途
Flannel シンプルでセットアップが容易。VXLANを利用したオーバーレイネットワーク。
Calico ネットワークポリシーに強み。BGPを利用したルーティングも可能。
Weave Net 自動メッシュネットワーク構築。簡単に分散環境を構築可能。
Cilium eBPFを活用し高性能かつ柔軟なネットワーク制御が可能。

以下は、Flannelの動作概要です。

Kubernetesネットワークの性能課題

Kubernetesネットワークの性能課題は、「オーバーレイネットワークのオーバーヘッド」「カーネルネットワークスタックの負荷」「大量トラフィック時の課題」という三つの問題が互いに関連し合いながら発生しています。

①まず、オーバーレイネットワークのオーバーヘッドは、VXLANなどの技術でパケットをカプセル化するために追加の処理が必要となり、CPU負荷や通信遅延が増加します。この処理はLinuxカーネルのネットワークスタックを通じて行われるため、カーネルスタックの負荷をさらに高める原因となります。つまり、オーバーレイのオーバーヘッドがカーネルネットワークスタックの負荷増大に直接つながっています。

補足:VXLANなどのオーバーレイネットワークは、多くのCNIプラグイン(Flannel、Weave Net、Ciliumの一部モードなど)で採用されています。これらのオーバーレイ技術はパケットのカプセル化・復号処理にCPU負荷がかかるため、オーバーヘッドが発生します。一方、CalicoのBGPモードや一部のCNIはオーバーレイを使わず、L3ルーティングを活用するため、このオーバーヘッドを軽減できます。本記事では、代表的なオーバーレイ技術の課題を中心に解説していますが、CNIの選択によって性能課題の度合いは異なります。

②次に、カーネルネットワークスタックの負荷は、パケット処理に多くのCPUリソースを消費し、スループットの限界を生み出します。これによりネットワーク全体の処理能力が制約され、性能のボトルネックとなります。

③そして、大量トラフィックが発生する状況では、秒間数万〜数十万のリクエストが集中します。このとき、既に増大しているオーバーヘッドやカーネルスタックの負荷が顕著に影響し、ネットワーク帯域やCPU処理能力がボトルネックとなって性能劣化を引き起こします。

まとめると、オーバーレイネットワークのオーバーヘッドがカーネルネットワークスタックの負荷を増大させ、その結果として大量トラフィック時にネットワーク性能のボトルネックが顕在化するという因果関係があります。これらの問題は独立しているのではなく、連鎖的に影響し合いながらKubernetesネットワークの性能課題を形成しています。

スケールアップやスケールアウトは性能課題に対して根本的対策となるか?

これらの性能課題が顕著になると、ノードのCPUリソースを増やす(スケールアップ)だけでは、カーネルネットワークスタックの処理能力がボトルネックとなり、パケットロスや通信遅延を防げません。 また、ノード台数を増やす(スケールアウト)だけでも根本的なネットワーク負荷の軽減にはつながらず、結果としてアプリケーションのレスポンス低下やサービス品質の劣化を招きます。 そのため、ネットワーク高速化技術の導入が不可欠です。

まとめ

本記事では、従来のベアメタル環境からコンテナ環境への移行背景と、その中で重要な役割を果たすKubernetesのネットワークモデルについて解説しました。Kubernetesでは、Pod単位での通信を実現するためにCNIプラグインが用いられ、多様なネットワーク構成が可能となっています。

一方で、VXLANなどのオーバーレイ技術によるカプセル化処理や、Linuxカーネルのネットワークスタックを経由することによるCPU負荷の増大、大量トラフィック時の帯域・処理能力の制約など、ネットワーク性能面での課題も明らかになりました。

これらの課題を解決し、より高速で効率的なネットワークを実現するためには、RDMAやDPDKといった先進的な高速化技術の活用が不可欠です。後編では、これらの技術を中心に、Kubernetes環境におけるネットワーク高速化の具体的な手法と運用上のポイントについて詳しく解説します。

引き続きご期待ください。

連載シリーズ
テクノロジーコラム
著者プロフィール
山下 英之
山下 英之

[著者プロフィール]
フューチャーネットワーク事業部 第二ビジネスユニット
山下 英之(YAMASHITA HIDEYUKI)