0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kubernetesのリソース管理:request/limitの概念理解

0
Posted at

はじめに

Kubernetesのリソース管理について、その基本であるrequestlimitの概念を初めて知ったのでまとめます。

リソース管理が必要な理由

Kubernetesでは、複数のpodが同じnode(サーバ)上で動きます。
もし1つのpodが独占すると他のpodが動けなくなるため、それを防ぐために各Podに「どれだけリソースを使うか」を宣言させるのがリソース管理です。

request と limit の違い

request:最低限必要なリソース

「このPodを動かすには、最低これだけ必要です」という宣言。

resources:
  requests:
    memory: "128Mi"  # 最低128MiBのメモリが必要
    cpu: "250m"      # 最低0.25コアのCPUが必要

役割:

  • KubernetesがPodを配置するNodeを選ぶ基準になる
  • この値分のリソースは保証される

limit:使える最大のリソース

「このPodが使えるリソースの上限」を設定。

resources:
  limits:
    memory: "256Mi"  # 最大256MiBまで
    cpu: "500m"      # 最大0.5コアまで

役割:

  • リソースの使いすぎを防ぐ
  • limitを超えた場合の挙動はCPUとメモリで異なる

スロットリングとOOMKilled

CPUとメモリの場合、limitを超えた時の動作が違います。

CPUの場合→スロットリング

limitを超えると、処理速度が遅くなるだけ。Podは落ちない。

メモリの場合→OOMKilled

limitを超えると、Podが強制終了される(Out Of Memory Killed)。

# 確認方法
kubectl get pods
# STATUS: OOMKilled

kubectl describe pod <pod名>
# Reason: OOMKilled

設定例

基本的な設定

マニフェストファイルを作成して、その中に書く

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: nginx
    image: nginx:1.25
    resources:
      requests:
        memory: "128Mi"
        cpu: "250m"
      limits:
        memory: "256Mi" # requestの2倍程度
        cpu: "500m"

ファイルをアプライして、期待するpodができているか確認。

kubectl apply -f my-manifest.yaml
kubectl get pods

まとめ

request と limit の違い:

  • request:最低限保証されるリソース(Pod配置の基準)
  • limit:使える最大のリソース(使いすぎ防止)

CPU と メモリの違い:

  • CPU:limitを超えると遅くなる
  • メモリ:limitを超えるとPodが落ちる

リソース管理を適切に設定することで、安定したKubernetes運用が可能になります。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?