一:环境介绍
本人相关环境如下:
- spring-boot版本2.3.7.RELEASE
- spring-boot-starter-data-elasticsearch版本2.3.7.RELEASE
- Elasticsearch 7.6.2
- elasticsearch-analysis-ik-7.6.2 中文分词器
- harbor k8s镜像管理中心
- ceph 共享存储
下图为各软件间的版本对应关系,一定要按照对应关系使用,否则无法成功或出现各种错误。
推荐spring-boot-starter-data-elasticsearch,可以映射索引实体,并有内置方法,方便快速应用。
版本关系见:https://docs.spring.io/spring-data/elasticsearch/docs/4.0.2.RELEASE/reference/html/#preface.versions
二:准备工作
- 准备一套k8s集群
- 准备一套文件服务器如ceph、nfs、nas等
本文使用ceph做了一个共享存储,用于节点数据映射到宿主机中,用于数据恢复或迁移等工作 - 准备Elasticsearch 7.6.2的docker镜像包
- es-plugins-fs.yaml 插件目录映射yaml,es.yaml主文件
因为插件plugins多个node可以共享一个,所以单独做一个plugins的映射。每个node的data数据不一样,所以在es.yaml单独设置了每个node的映射。
es-plugins-fs.yaml插件挂载目录如下:
需要针对自己环境进行修改
apiVersion: v1
kind: PersistentVolume
metadata:
name: es-plugins-fs-pv
labels:
app: es-plugins-fs
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
# nfs或其他的自行替换
cephfs:
monitors:
- 100.20.30.111:6789
path: /es/es-data/plugins
user: cephfs
secretRef:
name: ceph-secret-admin
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: es-plugins-claim
namespace: tax
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
resources:
requests:
storage: 50Gi
selector:
matchLabels:
app: es-plugins-fs
es.yaml主文件如下:
需要针对自己环境进行修改
apiVersion: v1
kind: Service
metadata:
name: es-headless-service
labels:
app: elasticsearch
namespace: #自己服务的空间名
spec:
type: NodePort
ports:
- port: 9200
name: api-port
targetPort: 9200