使用Kubernetes搭建带有ik分词的Elasticsearch集群
创建好带有Ik分词的es镜像,并上传到镜像仓库中,创建镜像可参考链接中的文档
https://www.cnblogs.com/hi-lijq/p/16895206.html
编写es_cluster-ik-config.yaml 文件
apiVersion: v1
kind: ConfigMap
metadata:
name: es-cluster-ik-config
labels:
app: es-cluster
role: master
data:
IKAnalyzer.cfg.xml: |-
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!--<entry key="remote_ext_dict"></entry>-->
<!--用户可以在这里配置远程扩展停止词字典-->
<!--<entry key="remote_ext_stopwords"></entry>-->
</properties>
编写statefulset.yaml文件
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: es-cluster
spec:
serviceName: es-cluster-svc-headless
replicas: 3
selector:
matchLabels:
app: es-cluster
template:
metadata:
labels:
app: es-cluster
spec:
initContainers:
- name: permissions
image: busybox:latest
command: ["sh", "-c", "chown -R 1000:1000 /usr/share/elasticsearch/data"]
securityContext:
privileged: true
volumeMounts:
- name: storage
mountPath: /usr/share/elasticsearch/data
subPath: cce/busybox
- name: increase-vm-max-map
image: busybox:latest
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
- name: increase-fd-ulimit
image: busybox:latest
command: ["sh", "-c", "ulimit -n 65536"]
securityContext:
privileged: true
containers:
- name: es-cluster
image: 你的镜像仓库地址/es-ik:7.4.2
resources:
limits:
cpu: 1000m
requests:
cpu: 100m
ports:
- containerPort: 9200
name: rest
protocol: TCP
- containerPort: 9300
name: socket
protocol: TCP
volumeMounts:
- name: ik-config
readOnly: true
mountPath: /usr/share/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml
subPath: IKAnalyzer.cfg.xml
- name: storage
mountPath: /usr/share/elasticsearch/data
subPathExpr: cce/es-cluster/$(PODNAME)
env:
- name: TZ
value: Asia/Shanghai
- name: cluster.name
value: docker-cluster
- name: node.name
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: discovery.seed_hosts
value: "es-cluster-0.es-cluster-svc-headless,es-cluster-1.es-cluster-svc-headless,es-cluster-2.es-cluster-svc-headless"
# 初始化集群时,ES从中选出master节点
- name: cluster.initial_master_nodes
value: "es-cluster-0,es-cluster-1,es-cluster-2"
- name: ES_JAVA_OPTS
value: "-Xms2048m -Xmx2048m"
- name: discovery.zen.minimum_master_nodes
value: "2"
- name: network.host
value: "0.0.0.0"
- name: http.cors.enabled
value: "true"
- name: http.cors.allow-origin
value: "*"
- name: http.cors.allow-headers
value: "Authorization,X-Requested-With,Content-Length,Content-Type"
- name: PODNAME
valueFrom:
fieldRef:
fieldPath: metadata.name
imagePullSecrets:
- name: default-secret
volumes:
- name: ik-config
configMap:
name: es-cluster-ik-config
- name: storage
persistentVolumeClaim:
claimName: mmm
---
kind: Service
apiVersion: v1
metadata:
name: es-cluster-svc-headless
labels:
app: es-cluster
spec:
selector:
app: es-cluster
clusterIP: None
ports:
- port: 9200
name: rest
- port: 9300
name: socket
---
kind: Service
apiVersion: v1
metadata:
name: es-cluster-svc
labels:
app: es-cluster
spec:
selector:
app: es-cluster
type: NodePort
ports:
- port: 9200
name: rest
- port: 9300
name: socket
执行命令
kubectl apply -f es_cluster-ik-config.yaml
kubectl apply -f statefulset.yaml
分类:
k8s
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理