コンテナーのメモリ limit 設定の確認

メモリ使用量に合った上限と、実際に適用される制限を確認してください。

説明

有効なメモリ limit がないと、一つのワークロードがノードのメモリを過剰に使い、他のワークロードに影響する場合があります。明示的な設定がなくても LimitRange が既定の制限を設定することがあるため、デプロイ済みの構成を確認する必要があります。

メモリ limit を超えると、プロセスが OOM によって終了する場合があります。低すぎる値はアプリケーション障害を招き、limit がノードのあらゆるメモリ不足を防ぐわけではありません。

想定される影響

  • メモリ使用量の急増により、他の Pod の性能低下や退避が発生する場合があります。
  • 低すぎる limit によりプロセスが終了し、サービスが停止する場合があります。

対処方法

  • 実際の使用量とピーク負荷に合わせて resources.limits.memory を設定し、request と併せて確認してください。
  • OOM による終了とノードのメモリ不足を監視して値を調整してください。LimitRange で既定値と許容範囲を管理し、実際の制限を確認してください。

例

既存の 50Mi と 512Mi は説明用の値です。ワークロードに合わせて調整し、実際のデプロイには保守されているイメージを使ってください。

変更前

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    container {
      image = "nginx:1.7.9"
      name  = "example"

      resources {
        requests = {
          memory = "50Mi"
        }
      }
    }
  }
}

変更後

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    container {
      image = "nginx:1.7.9"
      name  = "example"

      resources {
        limits = {
          cpu    = "0.5"
          memory = "512Mi"
        }

        requests = {
          cpu    = "250m"
          memory = "50Mi"
        }
      }
    }
  }
}

補足:

  • 変更前: memory request だけを明示しています。他のポリシーが limit を設定するか確認する必要があります。
  • 変更後: memory limit 512Mi と request を明示します。実際の最大使用量に合っているか確認する必要があります。

参考資料