2026年7月10日

2026年7月10日

Kubernetesのリソース制限(requests/limits)を設定する方法

はじめに

Kubernetesでは、Podのリソース利用を制御するためにrequestslimitsという2つの概念が用いられます。これらは、クラスター全体のリソース管理やパフォーマンス最適化に重要で、特に高度な負荷状況下でも安定したサービス提供を可能にします。

症状・背景

このテーマが必要になる主な場面:

  • リソース競合が発生し、一部のPodが不正にリソースを使用している。
  • クラスターのパフォーマンスが低下し、サービスの可用性や一貫性が確保できていない。
  • デプロイメントを自動化する際、適切なリソース要求と制限を設定したい。

手順・設定方法

ステップ1: リソース要件を定義

# まず、Podが必要とする最低限のリソース量と最大利用可能リソース量を決定します。
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
    - name: nginx
      image: nginx:latest
      resources:
        limits:
          cpu: "200m"
          memory: 512Mi
        requests:
          cpu: "100m"
          memory: 256Mi

ステップ2: デプロイメントにリソース制限を適用

# DeploymentでPodのリソース制限を設定します。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          resources:
            limits:
              cpu: "200m"
              memory: 512Mi
            requests:
              cpu: "100m"
              memory: 256Mi

ステップ3: ノードのリソース制限を設定

# 設定したリソース制限がノードに適切に適用されるよう、必要に応じてノードレベルでの制限も考慮します。
apiVersion: node.k8s.io/v1
kind: ResourceQuota
metadata:
  name: cpu-memory-quota
spec:
  hard:
    pods/limit: "3"
    requests.cpu: "200m"
    limits.cpu: "400m"
    requests.memory: 512Mi
    limits.memory: 1Gi

ステップ4: 実践とトラブルシュート

# デプロイメントを適用し、Podが正常に起動していることを確認します。
kubectl apply -f pod.yaml
kubectl get pods

# リソース制限の効果を監視するために、kube-state-metricsやPrometheusなどのツールを利用します。
kubectl top pod nginx-pod

注意事項

  • requestsはPodが最低でもどの程度のリソースを必要とするかを定義し、システムがPodをスケジューリングする際の参考となります。
  • limitsはPodが最大でどの程度のリソースを使用できるかを制限します。これにより、不正なリソース消費を防止できます。
  • requestslimitsの差(余裕)が大きい場合は、システムのパフォーマンス管理に優れた柔軟性を提供します。

まとめ

1. リソース制限の設定: PodやDeploymentでresourcesセクションを使ってrequestslimitsを定義します。

2. ノードレベルでの制約: ノード全体のリソース利用を制御するために、ResourceQuotaオブジェクトを使用します。

3. 監視とトラブルシュート: kubectl top podコマンドやPrometheusなどのツールを使ってリソース使用状況を定期的に確認します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ