Back

頼むからKubernetesでCPU制限を使うのはやめてくれという記事を読んだ

頼むからKubernetesでCPU制限を使うのはやめてくれ」という記事を読んでなるほどな〜〜〜と思った一方で思うところがあったので感想をかく

要約

KubernetesのCPU制限の問題: KubernetesにおけるCPU制限は、多くの場合、害になることが多い。実際、これらの制限はKubernetesのCPUスロットリング(処理能力の制限)の主要な原因である。

マーカスとテレサは砂漠を旅しています。彼らは1日3リットルを生み出す魔法の水筒を持っています。人が生きていくためには1日1リットルが必要です。

  1. 制限なし、リクエストなし: マーカスが貪欲に水をすべて飲み、テレサが喉の渇きで亡くなる。これは、CPU飢餓の状況を表し、特定のプロセスがすべてのリソースを使用し、他のプロセスが必要なリソースを得られずに失敗する例です。
  2. 制限あり、リクエストの有無にかかわらず: テレサは病気になり、より多くの水が必要になるが、彼女の制限は1日あたり1リットルで、これが守られるため、彼女は喉の渇きで亡くなる。これは、リソースが存在していても、厳格な制限により使用できない状況を示しています。
  3. 制限なし、リクエストあり: マーカスが病気になるが、テレサのために水が保存されているため、彼女は生き残る。これは、CPU制限がないがリクエストが存在する状況を表し、必要なリソースが適切に割り当てられることを示しています。

全体として、これらの話はCPU制限の設定が、リソースの不公平な分配やプロセスの失敗につながる可能性があることを示唆しています。特に、リソースが存在しても、厳格な制限によってその使用が制限される場合、有害な結果を招く可能性があります。

メモリ制限とリクエストに関する注意: この記事はCPUに焦点を当てているが、メモリは圧縮不可能なリソースであるため、メモリに関しては常に制限とリクエストを使用し、両者を等しく設定することを推奨している。

感想

  • リミットにかかりCPUがスロットルされるとプロセスがCPUを再び使用できるようになるまで待足されるので、例えばP99タイルに大きく影響がでうるのでなるほどなと思った
  • メモリ制限に関してはlimitとrequestを同値に設定する点において完全同意

Follow me on