10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

TL; DR Kube-Router ず Kube-OVN を陀き、すべおの CNI が正垞に動䜜したす。自動 MTU 怜出を陀けば、Calico が最適です。

過去のチェック蚘事の曎新 (2018 О 2019、テスト時点では、1.19 幎 18.04 月時点で CNI が曎新された Ubuntu 2020 䞊で Kubernetes XNUMX を䜿甚しおいたす。

指暙の説明に入る前に...

2019 幎 XNUMX 月以降の新機胜は䜕ですか?

  • 独自のクラスタヌでテスト可胜: ツヌルを䜿甚しお独自のクラスタヌでテストを実行できたす。 Kubernetes ネットワヌク ベンチマヌク: KNB
  • 新しいメンバヌが登堎したした
  • 新しいシナリオ: 珟圚のチェックでは「Pod-to-Pod」ネットワヌク パフォヌマンス テストが実行されたすが、実際の条件に近いテストを実行する新しい「Pod-to-Service」スクリプトが远加されたした。 実際には、API を備えたポッドは、ポッドの IP アドレスを通じおではなく、サヌビスずしおベヌスず連携したす (もちろん、䞡方のシナリオで TCP ず UDP の䞡方をチェックしたす)。
  • リ゜ヌス消費: 各テストには独自のリ゜ヌス比范が含たれるようになりたした。
  • アプリケヌション テストの削陀: コミュニティおよび CNI メンテナずの有益なコラボレヌションにより、CNI の起動遅延 (Pod の最初の数秒) による TCP 経由の iperf 結果ずcurl 結果ずの間にギャップがあるこずが刀明したため、HTTP、FTP、および SCP テストは行わなくなりたした。実際の状況では䞀般的ではありたせん)。
  • オヌプン゜ヌス: すべおのテスト ゜ヌス (スクリプト、yml 蚭定、元の「生」デヌタ) が利甚可胜 ここで

リファレンステストプロトコル

プロトコルが詳しく説明されおいたす ここでこの蚘事はデフォルトのカヌネルを䜿甚した Ubuntu 18.04 に関するものであるこずに泚意しおください。

評䟡甚の CNI の遞択

このテストは、XNUMX ぀の yaml ファむルで構成された CNI を比范するこずを目的ずしおいたす (したがっお、VPP などのスクリプトによっおむンストヌルされたすべおの CNI は陀倖されたす)。

比范のために遞択した CNI:

  • アントレア v.0.9.1
  • キャリコ v3.16
  • Canal v3.16 (Flannel ネットワヌク + Calico ネットワヌク ポリシヌ)
  • 繊毛 1.8.2
  • フランネル 0.12.0
  • Kube ルヌタヌの最新情報 (2020–08–25)
  • りィヌブネット 2.7.0

CNI の MTU の構成

たず、自動 MTU 怜出が TCP パフォヌマンスに䞎える圱響を確認したす。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

TCP パフォヌマンスに察する MTU の圱響

UDP を䜿甚するず、さらに倧きなギャップが芋぀かりたす。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)
UDP パフォヌマンスに察する MTU の圱響

テストで明らかになったパフォヌマンスぞの倚倧な圱響を考慮しお、私たちはすべおの CNI メンテナヌに垌望の手玙を送りたいず思いたす。自動 MTU 怜出を CNI に远加しおください。 子猫、ナニコヌン、そしお最もかわいい子猫、小さなデボップさえも救うこずができたす。

ただし、自動 MTU 怜出をサポヌトせずに CNI を䜿甚する必芁がある堎合は、手動で蚭定しおパフォヌマンスを向䞊させるこずができたす。 これは Calico、Canal、WeaveNet に適甚されるこずに泚意しおください。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)
随䌎する CNI ぞの私の小さなお願いです...

CNI テスト: 生デヌタ

このセクションでは、CNI ず正しい MTU (自動的に決定たたは手動で蚭定) を比范したす。 ここでの䞻な目的は、生デヌタをグラフで衚瀺するこずです。

色の凡䟋:

  • グレヌ - サンプル (぀たり、裞の鉄)
  • 緑 - 9500 Mbpsを超える垯域幅
  • 黄色 - 垯域幅が 9000 Mbps を超える
  • オレンゞ - 8000 Mbps を超える垯域幅
  • èµ€ - 垯域幅が 8000 Mbps 未満
  • 青 - ニュヌトラル (垯域幅ずは無関係)

無負荷時のリ゜ヌス消費量

たず、クラスタヌが「スリヌプ」しおいるずきのリ゜ヌス消費量を確認したす。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)
無負荷時のリ゜ヌス消費量

ポッド間

このシナリオは、クラむアント ポッドが IP アドレスを䜿甚しおサヌバヌ ポッドに盎接接続するこずを前提ずしおいたす。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)
ポッド間のシナリオ

TCP

ポッド間の TCP 結果ずそれに察応するリ゜ヌス消費量:

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

UDP

ポッド間の UDP 結果ずそれに察応するリ゜ヌス消費:

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

ポッドからサヌビスぞ

このセクションは実際のナヌスケヌスに関連しおおり、クラむアント Pod は ClusterIP サヌビス経由でサヌバヌ Pod に接続したす。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)
ポッドからサヌビスぞのスクリプト

TCP

ポッドからサヌビスぞの TCP 結果ずそれに察応するリ゜ヌス消費:

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

UDP

ポッドからサヌビスぞの UDP 結果ずそれに察応するリ゜ヌス消費:

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

ネットワヌクポリシヌのサポヌト

䞊蚘の䞭で唯䞀政治を支持しおいないのはフランネルです。 他のすべおは、むンバりンドずアりトバりンドを含むネットワヌク ポリシヌを正しく実装したす。 よくやった

CNI暗号化

チェックされた CNI の䞭には、Pod 間のネットワヌク亀換を暗号化できるものが含たれたす。

  • IPsec を䜿甚したアントレア
  • ワむダヌガヌドを䜿甚したキャリコ
  • IPsecを䜿甚したCilium
  • IPsec を䜿甚した WeaveNet

スルヌプット

残っおいる CNI が少なくなったので、すべおのシナリオを XNUMX ぀のグラフにたずめおみたしょう。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

資源の消費

このセクションでは、TCP および UDP で Pod 間の通信を凊理するずきに䜿甚されるリ゜ヌスを評䟡したす。 远加情報が提䟛されないため、ポッドからサヌビスぞのグラフを描画しおも意味がありたせん。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

すべおを䞀緒に入れお

すべおのグラフを繰り返しおみたす。ここでは少し䞻芳を導入し、実際の倀を「非垞に速い」、「䜎い」などの蚀葉に眮き換えたす。

10G ネットワヌク䞊の Kubernetes の CNI パフォヌマンス評䟡 (2020 幎 XNUMX 月)

結論ず私の結論

結果に぀いお私自身の解釈を䌝えおいるため、これは少し䞻芳的です。

新しい CNI が登堎し、Antrea のパフォヌマンスが良く、自動 MTU 怜出、暗号化、簡単なむンストヌルなど、初期のバヌゞョンでも倚くの機胜が実装されおいるこずを嬉しく思いたす。

パフォヌマンスを比范するず、Kube-OVN ず Kube-Router を陀くすべおの CNI が良奜に動䜜したす。 Kube-Router も MTU を怜出できたせんでした。ドキュメントのどこにも MTU を構成する方法が芋぀かりたせんでした (ここで このトピックに関するリク゚ストは受け付け䞭です)。

リ゜ヌス消費の点では、Cilium は䟝然ずしお他のものよりも倚くの RAM を䜿甚したすが、メヌカヌは明らかに倧芏暡なクラスタヌをタヌゲットにしおおり、これは明らかに XNUMX ノヌド クラスタヌでのテストず同じではありたせん。 Kube-OVN も CPU ず RAM リ゜ヌスを倧量に消費したすが、Open vSwitch に基づいた若い CNI です (Antrea ず同様、パフォヌマンスが高く、消費量が少なくなりたす)。

Flannel を陀く党員がネットワヌク ポリシヌを持っおいたす。 目暙は蒞したカブよりも単玔で、軜いほど良いため、圌は決しお圌らをサポヌトしない可胜性が非垞に高いです。

たた、䜕よりも暗号化のパフォヌマンスが玠晎らしいです。 Calico は最も叀い CNI の 9000 ぀ですが、暗号化が远加されたのはほんの数週間前です。 圌らは IPsec の代わりにワむダヌガヌドを遞択したした。簡単に蚀えば、それは非垞に玠晎らしく機胜し、テストのこの郚分では他の CNI を完党に䞊回りたした。 もちろん、暗号化によりリ゜ヌスの消費量は増加したすが、達成されるスルヌプットにはそれだけの䟡倀がありたす (Calico は、XNUMX 䜍の Cilium ず比范しお暗号化テストで XNUMX 倍の向䞊を瀺したした)。 さらに、Calico をクラスタヌにデプロむした埌はい぀でもワむダヌガヌドを有効にするこずができ、必芁に応じお短期間たたは氞久に無効にするこずもできたす。 すごく䟿利なんですけどね Calico は珟圚 MTU を自動怜出しないこずに泚意しおください (この機胜は将来のバヌゞョンで予定されおいたす)。そのため、ネットワヌクがゞャンボ フレヌム (MTU XNUMX) をサポヌトしおいる堎合は、必ず MTU を蚭定しおください。

ずりわけ、Cilium はクラスタヌ ノヌド間 (ポッド間だけでなく) のトラフィックを暗号化できるこずに泚意しおください。これはパブリック クラスタヌ ノヌドにずっお非垞に重芁になる可胜性がありたす。

結論ずしお、次の䜿甚䟋をお勧めしたす。

  • 非垞に小さなクラスタヌには CNI が必芁、たたはセキュリティは必芁ありたせん ず連携 フランネル、最も軜量で最も安定した CNI (圌はたた、ホモ・クベルナりトゥスたたはホモ・コンタむトルスによっお発明された䌝説によるず、最叀の人物の䞀人でもありたす。。 最も独創的なプロゞェクトにも興味があるかもしれたせん k3s、 チェック
  • 通垞のクラスタヌには CNI が必芁: サラサ - 任意ですが、必芁に応じお MTU を蚭定するこずを忘れないでください。 簡単か぀自然にネットワヌク ポリシヌを操䜜したり、暗号化をオンたたはオフにしたりするこずができたす。
  • (非垞に) 倧芏暡なクラスタヌには CNI が必芁: そうですね、このテストでは倧芏暡なクラスタヌの動䜜は瀺されおいたせん。喜んでテストを実斜したいのですが、10Gbps 接続を備えたサヌバヌが数癟台もありたせん。 したがっお、最良の遞択肢は、少なくずも Calico ず Cilium を䜿甚しお、倉曎したテストをノヌド䞊で実行するこずです。

出所 habr.com

コメントを远加したす