Open5

kubernetesのよくわからんところをわかるようにしていく | リソース管理

オフトンスキーオフトンスキー

RequestとLimitの違いがわからん

オフトンスキーオフトンスキー

Kubernetes best practices: Resource requests and limits

Requests and limits are the mechanisms Kubernetes uses to control resources such as CPU and memory. Requests are what the container is guaranteed to get. If a container requests a resource, Kubernetes will only schedule it on a node that can give it that resource. Limits, on the other hand, make sure a container never goes above a certain value. The container is only allowed to go up to the limit, and then it is restricted.

Kubernetesクラスターのキャパシティ管理を行うためにRequestsとLimitsを確実に設定する方法

オフトンスキーオフトンスキー

podは起動すると負荷に応じてノード側のallocatableなリソースを使えるだけ使おうとする。
そうすると、ノード内に複数のpodがあるとき、pod間でリソースを奪い合い、ノードに余分な負荷がかかる。困ったぞ~~

そこでpodが使えるリソースを制限する仕組みとしてRequestsとLimitsを導入する。

  • Requests: podに最低限割り当てられるリソース量。つまりminimum requirement
  • Limits: podが使えるリソースの最大値。つまりmaximum

それならminとmaxという名称にすればいいのに

オフトンスキーオフトンスキー

現在の設定の確認方法

ノードの詳細を出力し、Allocated resourcesを確認する

出力例

$ kubectl describe nodes {node} -n {namespace}
:
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource                    Requests      Limits
  --------                    --------      ------
  cpu                         1000m (50%)   2 (103%)
  memory                      512Mi (25%)  1024Mi (50%)
  ephemeral-storage           0 (0%)        0 (0%)
  hugepages-1Gi               0 (0%)        0 (0%)
  hugepages-2Mi               0 (0%)        0 (0%)
  attachable-volumes-aws-ebs  0             0