使用Kubernetes搭建带有ik分词的Elasticsearch集群
  m1cph75Xdr0H 2023年11月02日 46 0

创建好带有Ik分词的es镜像,并上传到镜像仓库中,创建镜像可参考链接中的文档 https://blog.51cto.com/u_15204812/6460887

编写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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  4Txe79BjyroE   2023年12月08日   28   0   0 TCP
  L83A5jZvvg3Q   2023年11月22日   23   0   0 长连接TCPHTTP
  jnZtF7Co41Wg   2023年12月11日   35   0   0 文件系统xmlGNU
  KRsXEGSB49bk   2023年11月24日   48   0   0 TCPHTTP首部
  pfb3gDAOHucg   2023年12月09日   38   0   0 TCP网络层协议UDP
  4Txe79BjyroE   2023年12月10日   32   0   0 xmlSOAP
  mjtHZIki74si   2023年12月06日   29   0   0 TCP重传
  KRsXEGSB49bk   2023年11月22日   26   0   0 TCPHTTP首部