MeWrite Docs

Kubernetes: OOMKilled

Kubernetesでコンテナがメモリ制限を超えて強制終了されるエラーの原因と解決策

概要

コンテナが設定されたメモリ制限を超えた際にOOM Killerによって強制終了されるエラーです。

エラーメッセージ

``` State: Terminated Reason: OOMKilled Exit Code: 137 ```

原因

  1. メモリ制限が低すぎる: アプリケーションの必要量を下回る
  2. メモリリーク: アプリケーションのバグ
  3. JVMヒープ設定ミス: コンテナ制限とヒープサイズの不整合
  4. 一時的なスパイク: 負荷増加時のメモリ急増

解決策

1. メモリ使用量を確認

```bash

Pod のメモリ使用状況

kubectl top pod

コンテナの詳細

kubectl describe pod ```

2. リソース制限を調整

```yaml apiVersion: v1 kind: Pod spec: containers:

  • name: app resources: requests: memory: “256Mi” limits: memory: “512Mi” ```

3. JVMアプリケーションの場合

```yaml env:

  • name: JAVA_OPTS value: “-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0” ```

4. VPA (Vertical Pod Autoscaler) を使用

```yaml apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: my-vpa spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app updatePolicy: updateMode: “Auto” ```

よくある間違い

  • limitsなしでデプロイ(ノード全体に影響)
  • requestsとlimitsの差が大きすぎる
  • JVMでコンテナ認識が無効

関連エラー

関連エラー

Kubernetes の他のエラー

最終更新: 2025-12-10