コンテナのリソースの管理
あなたが指定するとき ポッド、オプションで各リソースの量を指定できます コンテナニーズ。指定する最も一般的なリソースはCPUとメモリ(RAM)です。他にもあります。

ポッド内のコンテナーのリソース要求を指定すると、スケジューラーはこの情報を使用して、ポッドを配置するノードを決定します。 コンテナのリソース制限を指定すると、kubeletはそれらの制限を適用して、実行中のコンテナが設定した制限を超えてそのリソースを使用できないようにします。kubeletは、少なくともそのコンテナが使用するシステムリソースの要求量も予約します。

リクエストと制限
ポッドが実行されているノードに使用可能なリソースが十分にある場合、コンテナーがそのrequestリソースで指定されているよりも多くのリソースを使用する可能性があります(許可されます)。ただし、コンテナはそのリソースを超えて使用することはできませんlimit。

たとえばmemory、コンテナに256 MiBのリクエストを設定し、そのコンテナが8GiBのメモリを備えたノードにスケジュールされたポッドにあり、他のポッドがない場合、コンテナはより多くのRAMを使用しようとします。

memoryそのコンテナに4GiBの制限を設定した場合、kubelet(および コンテナランタイム)制限を適用します。ランタイムは、コンテナーが構成されたリソース制限を超えて使用することを防ぎます。例:コンテナ内のプロセスが許可された量を超えるメモリを消費しようとすると、システムカーネルは、メモリ不足(OOM)エラーで、割り当てを試みたプロセスを終了します。

制限は、事後対応(違反を検出するとシステムが介入する)または強制(システムがコンテナーが制限を超えないようにする)のいずれかで実装できます。ランタイムが異なれば、同じ制限を実装する方法も異なります。

注:コンテナが独自のメモリ制限を指定しているが、メモリリクエストを指定していない場合、Kubernetesは制限に一致するメモリリクエストを自動的に割り当てます。同様に、コンテナが独自のCPU制限を指定しているが、CPUリクエストを指定していない場合、Kubernetesは制限に一致するCPUリクエストを自動的に割り当てます。
リソースタイプ
CPUとメモリはそれぞれリソースタイプです。リソースタイプには基本単位があります。CPUはコンピューティング処理を表し、KubernetesCPUの単位で指定されます。メモリはバイト単位で指定されます。Kubernetes v1.14以降を使用している場合は、膨大なページリソースを指定できます。巨大なページはLinux固有の機能であり、ノードカーネルはデフォルトのページサイズよりもはるかに大きいメモリブロックを割り当てます。

たとえば、デフォルトのページサイズが4KiBであるシステムでは、制限を指定できます hugepages-2Mi: 80Mi。コンテナが40を超える2MiBの巨大なページ(合計80 MiB)を割り当てようとすると、その割り当ては失敗します。

注:hugepages-*リソースをオーバーコミットすることはできません。これは、memoryおよびcpuリソースとは異なります。
CPUとメモリは、まとめてコンピューティングリソースまたは単に リソースと呼ばれます。コンピューティングリソースは、要求、割り当て、および消費できる測定可能な量です。これらはAPIリソースとは異なり ます。ポッドやサービスなどのAPIリソースは 、KubernetesAPIサーバーを介して読み取りおよび変更できるオブジェクトです。

ポッドとコンテナのリソースリクエストと制限
ポッドの各コンテナは、次の1つ以上を指定できます。

spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.limits.hugepages-<size>
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
spec.containers[].resources.requests.hugepages-<size>
リクエストと制限は個々のコンテナでのみ指定できますが、ポッドリソースのリクエストと制限について話すと便利です。特定のリソースタイプの ポッドリソースリクエスト/制限は、ポッド内の各コンテナのそのタイプのリソースリクエスト/制限の合計です。

Kubernetesのリソースユニット
CPUの意味
CPUリソースの制限と要求は、CPU単位で測定されます。Kubernetesの1つのCPUは、クラウドプロバイダーの場合は1つのvCPU /コア、ベアメタルIntelプロセッサの場合は1つのハイパースレッドに相当します。

部分的なリクエストは許可されます。のコンテナはspec.containers[].resources.requests.cpu、0.51つのCPUを要求するコンテナの 半分のCPUが保証されます。この式0.1は100m、「100ミリク」と読むことができる式と同等です。「百ミリコア」と言う人もいますが、これは同じことを意味すると理解されています。のような小数点付きのリクエストはAPIによって0.1変換さ100mれ、1m許可されていない精度よりも細かくなります。このため、フォーム100mが優先される場合があります。

CPUは常に絶対量として要求され、相対量としては要求されません。0.1は、シングルコア、デュアルコア、または48コアのマシンの同じ量のCPUです。

記憶の意味
の制限と要求memoryはバイト単位で測定されます。E、P、T、G、M、Kのいずれかの接尾辞を使用して、メモリを整数または固定小数点数として表すことができます。Ei、Pi、Tiの2乗に相当するものを使用することもできます。 、Gi、Mi、Ki。たとえば、以下はほぼ同じ値を表します。

128974848, 129e6, 129M, 123Mi
これが例です。次のポッドには2つのコンテナがあります。各コンテナには、0.25 cpuと64MiB(2 26バイト)のメモリの要求があります。各コンテナには、0.5cpuと128MiBのメモリの制限があります。ポッドには、0.5cpuと128MiBのメモリの要求があり、1cpuと256MiBのメモリの制限があると言えます。

【秘訣を伝授!】記憶力をアップさせる食べ物や飲み物・秘訣を教えます!