Member-only story
コンテナとKubernetesによる無限のスケーリング(前半)
総合的な視点から
長い記事なので、前半と後半の2つに分けて投稿いたします。今回は前半です。
世界で最も優れたコードをコンテナ化しても、そのコンテナが機能を果たすためのリソースを持たなければ何の意味もありません。
この記事のアイデアは、効果的なコンテナプローブについて書いているときに生まれました。 kubelet の照会に対して正確なレスポンスを返すことは、ソリューションの最初の部分に過ぎないことが明らかになりました。
第二部は、この記事の主題であるコンテナへのリソース割り当てですが、Kubernetesポッド内の単一のコンテナからクラウドのほぼ無限の容量まで、リソース割り当ての全体像を探ります。
Kubernetesのリソース管理:まとめ
「コンテナに必要なリソースを常に確保するには?」
記事の前半は、Kubernetesのリソース管理を始めたばかりの人向けの復習だと考えてください。コンテナやネームスペースの制限範囲に関するKubernetesリソース管理に関する公式ドキュメントは、このスペースでは必読です。すでに分かっているという方は、次のセクションに読み飛ばしてください。
Kubernetesのリソース管理は、主にCPU、メモリ、ローカルのエフェメラルストレージを対象としています。コンテナ仕様では、リソースの種類ごとにリソースリクエストとリソース制限を定義することができます。
リソースリクエストは、コンテナランタイムに必要な最小のリソース量です。ノード・スケジューラは、そのノードがポッド内のすべてのコンテナに対してその最小リクエストを満たすことができる場合にのみ、そのノード上のポッドをスケジュールします。
リソース制限とは、コンテナのライフタイム中にkubeletがコンテナに割り当てるべきリソースの最大量です。コンテナにリソースリミットが設定されているがリソースリクエストがない場合、リソースリクエストをリソースリミットと同じ値に設定することと同じになります。
コンテナは、任意のリソースリクエストと制限を持つことができ、CPUとメモリの予約の異なる組み合わせは、次のように親ポッドのサービス品質を定義します。