关于如何在k8s中集群方式安装es

首先安装方式我们考虑了helm方式,但是在安装后按照官方文档安装插件时遇到了问题,最终我们选择直接使用yaml文件安装

yaml文件准备

---
# 外部网络
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: elasticsearch
  namespace: test
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/proxy-buffering: "on"
    nginx.ingress.kubernetes.io/client-body-buffer-size: 100m
    nginx.ingress.kubernetes.io/proxy-buffer-size: "800k"
    nginx.ingress.kubernetes.io/proxy-buffers-number: "400"
spec:
  rules:
    - host: elasticsearch.xxx.com
      http:
        paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: elasticsearch
                port:
                  number: 9200
---
# 内部域名
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  namespace: test
spec:
  selector:
    app: elasticsearch
  ports:
    - protocol: TCP
      port: 9200
      targetPort: 9200
---
# 内部域名
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch-hs
  namespace: test
spec:
  selector:
    app: elasticsearch
  ports:
    - protocol: TCP
      port: 9200
      targetPort: 9200
      name: http
    - protocol: TCP
      port: 9300
      targetPort: 9300
      name: transport
---
# 服务
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: elasticsearch
  namespace: test
  labels:
    app: elasticsearch
spec:
  serviceName: elasticsearch
  replicas: 3
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      nodeSelector:
        xxx/service-type-middleware: "v"
      initContainers:
        - name: init-file-permission
          image: "busybox:1.36"
          imagePullPolicy: IfNotPresent
          securityContext:
            runAsUser: 0
          command:
            - sh
            - -c
            - "chown -R 1000:0 /usr/share/elasticsearch/data /usr/share/elasticsearch/plugins"
          resources:
            requests:
              cpu: 10m
              memory: 1Gi
              ephemeral-storage: 1Gi
            limits:
              cpu: 1000m
              memory: 1Gi
              ephemeral-storage: 1Gi
          volumeMounts:
            - mountPath: /usr/share/elasticsearch/data
              name: elasticsearch
              subPath: data
            - mountPath: /usr/share/elasticsearch/plugins
              name: elasticsearch
              subPath: plugins
      containers:
      - name: elasticsearch
        image: elasticsearch:7.17.7
        ports:
        - containerPort: 9200
          name: http
        - containerPort: 9300
          name: transport
        env:
          - name: TZ
            value: Asia/Shanghai
          - name: node.name
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: cluster.initial_master_nodes
            value: "elasticsearch-0,elasticsearch-1,elasticsearch-2,"
          - name: discovery.seed_hosts
            value: "elasticsearch-hs"
          - name: cluster.name
            value: "elasticsearch"
          - name: network.host
            value: "0.0.0.0"
          - name: node.data
            value: "true"
          - name: node.ingest
            value: "true"
          - name: node.master
            value: "true"
          - name: node.ml
            value: "false"
          - name: node.remote_cluster_client
            value: "true"
          - name: ES_JAVA_OPTS
            value: -Xms1g -Xmx1g
          - name: restart
            value: "2"
        volumeMounts:
          - mountPath: /usr/share/elasticsearch/data
            name: elasticsearch
            subPath: data
          - mountPath: /usr/share/elasticsearch/plugins
            name: elasticsearch
            subPath: plugins
        resources:
          requests:
            cpu: 10m
            memory: 1Gi
            ephemeral-storage: 1Gi
          limits:
            cpu: 5000m
            memory: 5Gi
            ephemeral-storage: 100Gi
  volumeClaimTemplates:
    - metadata:
        name: elasticsearch
      spec:
        storageClassName: openebs-lvmssdpv
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 100Gi

以上yaml文件在我们集群是没问题的,如果要使用这份yaml文件需要修改几个地方

1.resources根据你们的需求去设置磁盘和内存大小

2.storageclass改成你们集群的我们的是openebs-lvmssdpv

3.ingress域名改成你们的,如果不需要域名访问直接将ingress这一项去掉

4.节点亲和度配置根据你们的业务调整,我们是通过label来调度集群节点的,位置在

nodeSelector:
  xxx/service-type-middleware: "v"

然后安装插件

```shell
kubectl -n test get pod|grep elas
```
安装插件, 安装完之后需要重启服务
```shell
kubectl -n test cp elasticsearch-analysis-ik-7.17.7           elasticsearch-0:/usr/share/elasticsearch/plugins/ik
kubectl -n test cp elasticsearch-analysis-pinyin-7.17.7       elasticsearch-0:/usr/share/elasticsearch/plugins/pinyin
kubectl -n test cp elasticsearch-analysis-stconvert-7.17.7    elasticsearch-0:/usr/share/elasticsearch/plugins/stconvert

kubectl -n test exec -it elasticsearch-0 -- bash
  cd /usr/share/elasticsearch/plugins
  ls ik/ pinyin/ stconvert/
  curl http://127.0.0.1:9200/_cat/plugins
```


```shell
kubectl -n test cp elasticsearch-analysis-ik-7.17.7           elasticsearch-1:/usr/share/elasticsearch/plugins/ik
kubectl -n test cp elasticsearch-analysis-pinyin-7.17.7       elasticsearch-1:/usr/share/elasticsearch/plugins/pinyin
kubectl -n test cp elasticsearch-analysis-stconvert-7.17.7    elasticsearch-1:/usr/share/elasticsearch/plugins/stconvert

kubectl -n test exec -it elasticsearch-1 -- bash
  cd /usr/share/elasticsearch/plugins
  ls ik/ pinyin/ stconvert/
  curl http://127.0.0.1:9200/_cat/plugins
 
```

```shell
kubectl -n test cp elasticsearch-analysis-ik-7.17.7           elasticsearch-2:/usr/share/elasticsearch/plugins/ik
kubectl -n test cp elasticsearch-analysis-pinyin-7.17.7       elasticsearch-2:/usr/share/elasticsearch/plugins/pinyin
kubectl -n test cp elasticsearch-analysis-stconvert-7.17.7    elasticsearch-2:/usr/share/elasticsearch/plugins/stconvert

kubectl -n test exec -it elasticsearch-2 -- bash
  cd /usr/share/elasticsearch/plugins
  ls ik/ pinyin/ stconvert/
  curl http://127.0.0.1:9200/_cat/plugins
```

安装好后重启pod就成功安装es了

prod          elasticsearch-0                                        1/1     Running   0               9d
prod          elasticsearch-1                                        1/1     Running   0               9d
prod          elasticsearch-2                                        1/1     Running   0               9d
elasticsearch-elasticsearch-0   Bound    pvc-a71e2cf3-d882-4c24-b52f-958a5d677a48   100Gi      RWO            openebs-lvmpv   9d
elasticsearch-elasticsearch-1   Bound    pvc-04757ff3-4794-45ef-9b8d-b30f7f22e981   100Gi      RWO            openebs-lvmpv   9d
elasticsearch-elasticsearch-2   Bound    pvc-3ffa2f38-3866-499c-b4fb-50e59a5cf89d   100Gi      RWO            openebs-lvmpv   9d

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值