Elasticsearch OOMKilled 137

2025. 2. 7. 23:18k8s/EFK

오류

    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       OOMKilled
      Exit Code:    137

원인
Elasticsearch는 기본적으로 가용한 메모리의 50%를 jvm에 할당함
jvm 옵션이 pod의 limit를 넘어서 지정되어서 발생한 문제

apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: docker.elastic.co/elasticsearch/elasticsearch:8.11.1
          env:
            # ✅ Set JVM Heap Size via Environment Variables
            - name: ES_JAVA_OPTS
              value: "-Xms5g -Xmx5g"  # ✅ Set both min and max heap size to 2GB
          resources:
            requests:
              memory: "2Gi"  # Minimum memory request
              cpu: "500m"
            limits:
              memory: "4Gi"  # Maximum memory limit
              cpu: "1"
          ports:
            - containerPort: 9200
          volumeMounts:
            - name: elasticsearch-data
              mountPath: /usr/share/elasticsearch/data
      volumes:
        - name: elasticsearch-data
          emptyDir: {}  # Use a PersistentVolumeClaim (PVC) for production

조치

          env:
            # ✅ Set JVM Heap Size via Environment Variables
            - name: ES_JAVA_OPTS
              value: "-XX:MaxRAMPercentage=75"  # ✅ Set both min and max heap size to 2GB