Member-only story
本番環境におけるKubernetesのリソース使用と管理(前半)
Mar 3, 2022
Kubernetesアプリケーションで本番運用に入る前に、K8sのリソース管理を理解する必要があります。コアとなるのは、Kubernetesのスケジューラがリソースのリクエストと制限をどのように処理するかについての記事です。長いので2回に分けて投稿します。今期は前半です。
リクエスト、制限、オーバーコミットメント、Slack/Waste、スロットリング
Kubernetesアプリケーションで本番運用に入る前に、K8sのリソース管理を理解する必要があります。コアとなるのは、Kubernetesのスケジューラがリソースのリクエストと制限をどのように処理するかを理解することであり、そうすれば他のすべてが理解できるようになります。では、早速やってみましょう。
この記事では次の項目を説明しています。
- リクエストと制限への理解
- k8s Schedulerがどのようにリソースを扱うかを把握する
- クラスタの使用率と安定性を向上させるためのアイデア
TL;DR
- メモリリクエスト数=制限数に設定
- CPU制限を設けない、またはkubeletでのCPU制限の実施を無効にする
- 使用量がリクエスト数を下回ること
- HPA/VPAによるスケーリングの使用
- ポッドのリソース使用状況の監視と警告
Pod Resources
k8sでは、ポッドは1つまたは複数のコンテナを持つことができ、通常はDockerで実行されます。
ポッドは、緊密に連携して動作するコンテナのラッパーと見なすことができ、そのため、同じマシン(ノード)上で実行する必要があります。つまり、ポッドのリソースの合計は、すべてのコンテナのリソースの合計となります。