在这里插入图片描述

  1. elasticsearch-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/data/elasticsearch-data"  # Elasticsearch 数据目录
  1. elasticsearch-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: es-data-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeName: elasticsearch-pv  # 指定绑定的 PV
  1. elasticsearch-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
  namespace: default
  labels:
    app: elasticsearch
spec:
  serviceName: elasticsearch
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
      - name: elasticsearch
        image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/elasticsearch:8.17.4
        env:
        - name: discovery.type
          value: single-node
        - name: ES_JAVA_OPTS
          value: "-Xms512m -Xmx512m"
        - name: xpack.security.enabled
          value: "false"
        ports:
        - containerPort: 9200
          name: http
        - containerPort: 9300
          name: transport
        volumeMounts:
        - name: data
          mountPath: /data  # 容器内的数据目录
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: es-data-pvc
  1. elasticsearch-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  labels:
    app: elasticsearch
spec:
  selector:
    app: elasticsearch
  ports:
  - port: 9200
    targetPort: 9200
    nodePort: 32092
    name: http
  - port: 9300
    targetPort: 9300
    nodePort: 32093
    name: transport
  type: NodePort

部署顺序:

1. 先创建 PV

kubectl apply -f elasticsearch-pv.yaml

2. 再创建 PVC(会自动绑定到 PV)

kubectl apply -f elasticsearch-pvc.yaml

3. 创建 StatefulSet 和 Service

kubectl apply -f elasticsearch-statefulset.yaml
kubectl apply -f elasticsearch-service.yaml

验证部署:

检查 PV 和 PVC 状态

kubectl get pv
kubectl get pvc

检查 Pod 状态

kubectl get pods -l app=elasticsearch

检查 Service

kubectl get svc elasticsearch

测试访问

curl http://<node-ip>:32092
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐