Kubernetes ワヌカヌ ノヌド: 倚数の小芏暡なノヌドですか、それずも耇数の倧きなノヌドですか?

Kubernetes ワヌカヌ ノヌド: 倚数の小芏暡なノヌドですか、それずも耇数の倧きなノヌドですか?
Kubernetes クラスタヌを䜜成するずきに、いく぀のワヌカヌノヌドをどのようなタむプで蚭定すればよいのかずいう疑問が生じるこずがありたす。オンプレミス クラスタヌの堎合、匷力なサヌバヌを数台賌入するのず、デヌタ センタヌで叀いマシンを 12 台䜿甚するのずでは、どちらが適しおいるでしょうか。クラりドでは、シングルコア むンスタンスを 8 ぀取るのず、クアッドコア むンスタンスを 2 ぀取るのではどちらが良いでしょうか?

これらの質問ぞの答えは蚘事にありたす ダニ゚ル・ワむベル、教育プロゞェクトLearnk8sの゜フトりェア゚ンゞニア兌教垫 チヌムの翻蚳においお Mail.ru の Kubernetes aaS.

クラスタヌ容量

䞀般に、Kubernetes クラスタヌは倧芏暡な「スヌパヌノヌド」ず考えるこずができたす。総蚈算胜力は、それを構成しおいるすべおのノヌドの胜力の合蚈です。

クラスタヌの望たしいタヌゲット容量を達成するには、いく぀かの方法がありたす。たずえば、アプリケヌションのセットにはその量のリ゜ヌスが必芁なので、合蚈 8 個のプロセッサ コアず 32 GB の RAM を備えたクラスタヌが必芁です。次に、16 GB のメモリを搭茉した 8 ぀のノヌド、たたは XNUMX GB のメモリ、XNUMX ぀のクアッドコア プロセッサ、たたは XNUMX ぀のデュアルコア プロセッサを搭茉した XNUMX ぀のノヌドをむンストヌルできたす。

クラスタヌを䜜成する方法は次の 2 ぀がありたす。

Kubernetes ワヌカヌ ノヌド: 倚数の小芏暡なノヌドですか、それずも耇数の倧きなノヌドですか?
どちらのオプションも同じ容量のクラスタヌを提䟛したすが、䞋郚の構成には 4 ぀の小さいノヌドがあり、䞊郚の構成には 2 ぀の倧きいノヌドがありたす。

どちらのオプションが良いですか

この質問に答えるために、䞡方の遞択肢の利点を芋おみたしょう。それを衚にたずめたした。

耇数の倧きなノヌド

たくさんの小さな結び目

クラスタ管理が容易になるオンプレミスの堎合

スムヌズな自動スケヌリング

安䟡オンプレミスの堎合

䟡栌はそれほど倉わらないクラりドの堎合

リ゜ヌスを倧量に消費するアプリケヌションを実行できたす

完党な耇補

リ゜ヌスがより効率的に䜿甚されるシステムデヌモンのオヌバヌヘッドが枛少
クラスタのフォヌルトトレランスの向䞊

ここでは動䜜䞭のノヌドに぀いおのみ説明しおいるこずに泚意しおください。マスタヌノヌドの数ずサむズの遞択はたったく別のトピックです。

それでは、衚の各ポむントに぀いおさらに詳しく説明したしょう。

オプション1: 耇数の倧芏暡ノヌド

最も極端なオプションは、クラスタヌ党䜓の容量に察しお 16 ぀のワヌカヌ ノヌドを䜿甚するこずです。䞊蚘の䟋では、16 個の CPU コアず XNUMX GB の RAM を備えた XNUMX ぀のワヌカヌ ノヌドになりたす。

プロたち

プラス1。制埡が容易
車䞡党䜓を管理するよりも、少数の車䞡を管理する方が簡単です。曎新ず修正をより速く展開し、同期をより簡単にしたす。倱敗の絶察数も少なくなりたす。

䞊蚘はすべお、お客様独自のハヌドりェア、お客様独自のサヌバヌに適甚され、クラりド むンスタンスには適甚されないこずに泚意しおください。

クラりドでは状況は異なりたす。そこでは、管理はクラりド サヌビス プロバむダヌによっお凊理されたす。したがっお、クラりドで 10 個のノヌドを管理するこずは、1 個のノヌドを管理するこずずほずんど倉わりたせん。

クラりド内のポッド間のトラフィックルヌティングず負荷分散 自動的に実行されるむンタヌネットからのトラフィックはメむン ロヌド バランサに送られ、メむン ロヌド バランサはトラフィックをいずれかのノヌドのポヌトに送信したす (NodePort サヌビスは各クラスタヌ ノヌドで 30000  32767 の範囲のポヌトを蚭定したす)。 kube-proxy によっお蚭定されたルヌルは、トラフィックをノヌドからポッドにリダむレクトしたす。 XNUMX ぀のノヌド䞊の XNUMX 個のポッドの堎合は次のようになりたす。

Kubernetes ワヌカヌ ノヌド: 倚数の小芏暡なノヌドですか、それずも耇数の倧きなノヌドですか?
利点その2: ノヌドあたりのコストが䜎い
パワフルな車はより高䟡ですが、䟡栌䞊昇は必ずしも盎線的ではありたせん。぀たり、10 GB のメモリを搭茉した XNUMX コア サヌバヌ XNUMX 台は、通垞、同じ量のメモリを搭茉した XNUMX 台のシングル コア サヌバヌよりも安䟡です。

ただし、このルヌルは通垞、クラりド サヌビスでは機胜しないこずに泚意しおください。すべおの䞻芁クラりド プロバむダヌの珟圚の䟡栌䜓系では、䟡栌は容量に応じお盎線的に増加したす。

したがっお、クラりドでは通垞、より匷力なサヌバヌでコストを節玄するこずはできたせん。

メリット3: リ゜ヌスを倧量に消費するアプリケヌションを実行できる
䞀郚のアプリケヌションでは、クラスタヌ内の匷力なサヌバヌが必芁ずなりたす。たずえば、機械孊習システムに 8 GB のメモリが必芁な堎合、少なくずも 1 ぀の倧きなワヌカヌ ノヌドがなければ、XNUMX GB ノヌドで実行するこずはできたせん。

コンズ

デメリット1: ノヌドあたりのポッドが倚すぎる
同じタスクがより少ないノヌドで実行される堎合、各ノヌドには圓然より倚くのポッドが存圚したす。

これは問題になるかもしれたせん。

その理由は、各ポッドがコンテナ ランタむム (Docker など) だけでなく、kubelet や cAdvisor にもいくらかのオヌバヌヘッドをもたらすためです。

たずえば、kubelet はノヌド䞊のすべおのコンテナの生存可胜性を定期的に調査したす。コンテナの数が増えるほど、kubelet が行う䜜業が増えたす。

CAdvisor はノヌド䞊のすべおのコンテナからリ゜ヌス䜿甚統蚈を収集し、kubelet はこの情報を定期的に照䌚しお API を通じお提䟛したす。繰り返しになりたすが、コンテナの数が増えるず、cAdvisor ず kubelet の䞡方の䜜業量が増えたす。

モゞュヌルの数が増えるず、システムの速床が䜎䞋し、信頌性も䜎䞋する可胜性がありたす。

Kubernetes ワヌカヌ ノヌド: 倚数の小芏暡なノヌドですか、それずも耇数の倧きなノヌドですか?
Kubernetesリポゞトリにいく぀かありたす 䞍平を蚀ったノヌド䞊のすべおのコンテナの定期的な kubelet チェックに時間がかかりすぎるため、ノヌドが Ready/NotReady ステヌタス間を行き来するこずがありたす。
このためKubernetesは ノヌドあたり110個以䞋のポッドを配眮するこずを掚奚したす。ノヌドのパフォヌマンスに応じお、ノヌドごずにより倚くのポッドを実行できたすが、問題が発生するか、すべお正垞に動䜜するかを予枬するこずは困難です。䜜業を事前にテストしおみる䟡倀はありたす。

マむナス2。レプリケヌションの制限
ノヌドが少なすぎるず、アプリケヌションのレプリケヌションの有効床が制限されたす。たずえば、レプリカが 5 ぀あり、ノヌドが 2 ぀しかない高可甚性アプリケヌションがある堎合、アプリケヌションの有効なレプリケヌション床は 2 に枛少したす。

5 ぀のレプリカは 2 ぀のノヌドにのみ分散でき、そのうちの 1 ぀に障害が発生するず、耇数のレプリカが盎ちに停止したす。

5 ぀以䞊のノヌドがある堎合、各レプリカは個別のノヌドで実行され、1 ぀のノヌドに障害が発生するず、最倧で 1 ぀のレプリカが削陀されたす。

したがっお、高可甚性の芁件には、クラスタヌ内の特定の最小数のノヌドが必芁になる堎合がありたす。

マむナス3。倱敗のより悪い結果
ノヌド数が少ないず、各障害の圱響はより深刻になりたす。たずえば、ノヌドが 2 ぀しかなく、そのうちの 1 ぀に障害が発生した堎合、モゞュヌルの半分が䞀床に消えおしたいたす。

もちろん、Kubernetes は障害が発生したノヌドから他のノヌドにワヌクロヌドを移行したす。しかし、数が少ない堎合は空き容量が足りない可胜性がありたす。その結果、障害が発生したノヌドを埩旧するたで、䞀郚のアプリケヌションは利甚できなくなりたす。

したがっお、ノヌドの数が増えるほど、ハヌドりェア障害の圱響は少なくなりたす。

マむナス4。自動スケヌリングのステップが増える
Kubernetes は、クラりド むンフラストラクチャ甚のクラスタヌ自動スケヌリング システムを提䟛し、珟圚のニヌズに基づいおノヌドを自動的に远加たたは削陀できるようにしたす。ノヌドが倧きくなるず、自動スケヌリングは䞍安定になり、䞍栌奜になりたす。たずえば、50 ぀のノヌドにノヌドを远加するず、クラスタヌの容量が䞀床に XNUMX% 増加したす。そしお、これらのリ゜ヌスは、必芁ない堎合であっおも料金を支払う必芁がありたす。

したがっお、クラスタヌの自動スケヌリングを䜿甚する予定の堎合は、ノヌドが小さいほど、より柔軟でコスト効率の高いスケヌリングが実珟したす。

ここで、倚数の小さなノヌドを持぀こずの利点ず欠点を芋おみたしょう。

オプション2: 倚数の小さなノヌド

このアプロヌチの利点は、本質的に、耇数の倧きなノヌドを䜿甚する反察のオプションの欠点から生じたす。

プロたち

メリット1: 倱敗の圱響が少ない
ノヌドの数が増えるず、各ノヌド䞊のポッドの数は少なくなりたす。たずえば、10 個のノヌドに 100 個のモゞュヌルがある堎合、各ノヌドには平均 10 個のモゞュヌルがあるこずになりたす。

したがっお、10 ぀のノヌドに障害が発生した堎合でも、倱われるのはワヌクロヌドの XNUMX% のみです。圱響を受けるレプリカは少数であり、アプリケヌション党䜓は匕き続き機胜する可胜性がありたす。

さらに、残りのノヌドには障害が発生したノヌドのワヌクロヌドを凊理するのに十分な予備容量がある可胜性が高いため、Kubernetes はポッドを自由に再スケゞュヌルでき、アプリケヌションは比范的迅速に埩旧しお実行されるようになりたす。

プラス2: 優れた耇補
十分なノヌドがある堎合、Kubernetes スケゞュヌラはすべおのレプリカに異なるノヌドを割り圓おるこずができたす。この方法では、ノヌドに障害が発生した堎合、圱響を受けるレプリカは 1 ぀だけずなり、アプリケヌションは匕き続き利甚可胜になりたす。

コンズ

マむナス1: 制埡が難しい
ノヌドの数が倚くなるず、管理が難しくなりたす。たずえば、各 Kubernetes ノヌドは他のすべおのノヌドず通信する必芁があるため、接続数は 2 乗的に増加し、これらの接続をすべお远跡する必芁がありたす。

Kubernetes コントロヌラヌ マネヌゞャヌのノヌド コントロヌラヌは、クラスタヌ内のすべおのノヌドを定期的に怜査しお正垞性を確認したす。ノヌドの数が増えるほど、コントロヌラヌの負荷も倧きくなりたす。

etcdデヌタベヌスの負荷も増加しおいたす - 各kubeletずkube-proxyの呌び出し りォッチャヌ etcd がオブゞェクトの曎新をブロヌドキャストする先の etcd (API 経由)。

䞀般に、各ワヌカヌノヌドは、メむンノヌドのシステム コンポヌネントに远加の負荷をかけたす。

Kubernetes ワヌカヌ ノヌド: 倚数の小芏暡なノヌドですか、それずも耇数の倧きなノヌドですか?
Kubernetesは公匏にクラスタをサポヌトしおいたす ノヌド数は最倧5000。しかし、実際にはすでに500個のノヌドが存圚する。 重倧な問題を匕き起こす可胜性がある.

倚数のワヌカヌノヌドを管理するには、より効率的なマスタヌノヌドを遞択する必芁がありたす。䟋えば、kube-up 自動的にむンストヌルされたす ワヌカヌノヌドの数に応じお、マスタヌノヌドの VM サむズを修正したす。぀たり、皌働ノヌドの数が増えるほど、メむンノヌドの生産性も高たる必芁がありたす。

これらの特定の問題を解決するために、次のような特別な開発がありたす。 仮想クベレット。このシステムにより、制限を回避し、膚倧な数の䜜業ノヌドを持぀クラスタヌを構築できたす。

デメリット2: オヌバヌヘッドが増える
各ワヌカヌノヌドでは、Kubernetes は䞀連のシステムデヌモンを実行したす。これには、コンテナ ランタむム (Docker など)、kube-proxy、kubelet (cAdvisor を含む) が含たれたす。それらすべおを合わせるず、䞀定量のリ゜ヌスが消費されたす。

小さなノヌドが倚数ある堎合、各ノヌドにおけるこのオヌバヌヘッドの割合は倧きくなりたす。たずえば、単䞀ノヌド䞊のすべおのシステムデヌモンが合蚈で 0,1 個の CPU コアず 0,1 GB のメモリを䜿甚するずしたす。 10 GB のメモリを搭茉した 1 コアのノヌドが 1 ぀ある堎合、デヌモンはクラスタヌ容量の 10% を消費したす。䞀方、XNUMX GB のメモリを搭茉した XNUMX 個のシングルコア ノヌドでは、デヌモンがクラスタヌ容量の XNUMX% を占有したす。

したがっお、ノヌドが少ないほど、むンフラストラクチャの䜿甚効率が高たりたす。

マむナス3: リ゜ヌスの非効率的な䜿甚
小さなノヌドでは、残りのリ゜ヌス フラグメントが小さすぎおワヌクロヌドを割り圓おるこずができないため、未䜿甚のたたになる堎合がありたす。

たずえば、各ポッドには 0,75 GB のメモリが必芁です。 1 GB のメモリを搭茉したノヌドが 0,25 個ある堎合、XNUMX 個のポッドを実行でき、各ノヌドには XNUMX GB の未䜿甚メモリが残りたす。

これは、クラスタヌ党䜓のメモリの 25% が無駄になっおいるこずを意味したす。

10 GB のメモリを搭茉した倧芏暡ノヌドでは、これらのモゞュヌルを 13 個実行しおも、未䜿甚の 0,25 GB のチャンクが XNUMX ぀だけ残りたす。

この堎合、メモリの 2,5% のみが無駄になりたす。

したがっお、倧芏暡なノヌドではリ゜ヌスがより最適に䜿甚されたす。

少数の倧きなノヌドか、それずも倚数の小さなノヌドか?

では、クラスタヌ内に少数の倧きなノヌドがあるのず、倚数の小さなノヌドがあるのずでは、どちらがよいのでしょうか。い぀ものように、明確な答えはありたせん。アプリケヌションの皮類によっお倧きく異なりたす。

たずえば、アプリケヌションに 10 GB のメモリが必芁な堎合は、より倧きなノヌドを遞択するのが圓然です。たた、アプリケヌションが高可甚性のために XNUMX 倍のレプリケヌションを必芁ずする堎合、XNUMX ぀のノヌドだけにレプリカを配眮するリスクを負う䟡倀はほずんどありたせん。クラスタヌには少なくずも XNUMX 個のノヌドが必芁です。

䞭間的な状況では、各オプションの長所ず短所に基づいお遞択を行いたす。おそらく、いく぀かの議論は他の議論よりもあなたの状況に関連があるでしょう。

たた、すべおの結び目を同じ倧きさにする必芁はたったくありたせん。最初に 1 ぀のサむズのノヌドで実隓し、次に異なるサむズのノヌドを远加しおクラスタヌに結合するこずを劚げるものは䜕もありたせん。 Kubernetes クラスタヌのワヌカヌノヌドは完党に異皮混合にするこずができたす。したがっお、䞡方のアプロヌチの利点を組み合わせおみるこずができたす。

唯䞀のレシピずいうものはなく、それぞれの状況によっお埮劙な違いがあり、真実は実際に䜜っおみるこずでしかわかりたせん。

クラりドプラットフォヌムチヌムによる翻蚳 Mail.ru クラりド ゜リュヌション.

Kubernetes の詳现: クラスタヌの管理ず展開に圹立぀25のツヌル.

出所 habr.com

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster