首页 > 其他分享 >使用Kubernetes搭建带有ik分词的Elasticsearch集群

使用Kubernetes搭建带有ik分词的Elasticsearch集群

时间:2023-02-07 10:55:04浏览次数:62  
标签:name Kubernetes value cluster ik Elasticsearch es metadata

创建好带有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

标签:name,Kubernetes,value,cluster,ik,Elasticsearch,es,metadata
From: https://www.cnblogs.com/hi-lijq/p/17097635.html

相关文章