我创建了两个 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 文件有什么问题吗?