Pod 不使用 PersistentVolume(PV) 和 PersistentVolumeClaim(PVC) 存储数据

问题描述 投票:0回答:0

我创建了两个 pod 一个运行一个简单的 scala 应用程序,它使用 akkaHttp 将用户数据添加到 Elasticsearch 中,另一个运行 elasticsearch:8.4.5 的 Pod。还为 akka 创建了一个外部服务,为 elasticsearch 创建了一个内部服务。我可以使用邮递员将数据添加到 ES 中并获取数据。现在我想使用 Persistent-Volume(使我的应用程序有状态)来存储数据,即使是 pod 死亡并重新创建,这里是我的 YAML 文件。

部署.yaml(弹性搜索)

`apiVersion: apps/v1
kind: Deployment
metadata:
  name: elastic-deployment

spec:
  replicas: 1
  selector:
    matchLabels:
      app: elastic-label
  template:
    metadata:
      name: elastic-pod
      labels:
        app: elastic-label
    spec:
      containers:
        - name: elastic-container
          image: elasticsearch:8.4.3
          ports:
            - containerPort: 9200
          env:
            - name: discovery.type
              valueFrom:
                configMapKeyRef:
                  name: elasticsearch-configmap
                  key: es.discovery.type
            - name: xpack.security.enabled
              valueFrom:
                configMapKeyRef:
                  name: elasticsearch-configmap
                  key: es.xpack.security.enabled
            - name: xpack.security.enrollment.enabled
              valueFrom:
                configMapKeyRef:
                  name: elasticsearch-configmap
                  key: es.xpack.security.enrollment.enabled
            - name: xpack.security.http.ssl.enabled
              valueFrom:
                configMapKeyRef:
                  name: elasticsearch-configmap
                  key: es.xpack.security.http.ssl.enabled
          volumeMounts:
            - name: elastic-storage
              mountPath: /storage/data
      volumes:
        - name: elastic-storage
          persistentVolumeClaim:
            claimName: elastic-pvc`

PersistentVolume.yaml

`apiVersion: v1
kind: PersistentVolume
metadata:
  name: elastic-pv

spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: /storage/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - minikube`

PersistentVolumeClaim.yaml

`apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: elastic-pvc

spec:
  volumeName: elastic-pv
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  resources:
    requests:
      storage: 1Gi
  storageClassName: ""
`

我能够将用户数据添加到 elasticsearch 中,但是当 pod 重新启动时数据也丢失并出现错误

An error occurred: [es/get] failed: [index_not_found_exception] no such index [user]

还有 minikube 中的目录“/storage/data”没有文件。

我的 YAML 文件有什么问题吗?

scala elasticsearch kubernetes akka-http
© www.soinside.com 2019 - 2024. All rights reserved.