# elasticsearch-deployment-8.8.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
  namespace: efk
  labels:
    app: elasticsearch
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch:8.8.0
        ports:
        - containerPort: 9200
        - containerPort: 9300
        env:
        - name: discovery.type
          value: "single-node"
        - name: xpack.security.enabled
          value: "true"
        - name: ELASTIC_PASSWORD
          valueFrom:
            secretKeyRef:
              name: elasticsearch-secret
              key: elastic_password
        - name: ES_JAVA_OPTS
          value: "-Xms2g -Xmx4g" # 设置 JVM 堆大小为 2GB-4GB
        resources: # 增加资源限制
          requests:
            memory: "4Gi"
            cpu: "1"
          limits:
            memory: "6Gi"
            cpu: "2"
        volumeMounts:
        - name: data-volume
          mountPath: /usr/share/elasticsearch/data
        - name: config-volume
          mountPath: /usr/share/elasticsearch/config
      volumes:
      - name: data-volume
        persistentVolumeClaim:
          claimName: elasticsearch-data-pvc
      - name: config-volume
        persistentVolumeClaim:
          claimName: elasticsearch-config-pvc