Bootstrap

KubeSphere部署Elasticsearch+Kibana

演示示例使用的是3.4.1,各版本有名字差异 功能是一样的

1.配置字典

名称:elasticsearch
键名:elasticsearch-conf
值:

network.host: 0.0.0.0
http.port: 9200 
transport.port: 9300
# head 插件需要这打开这两个配置,解决跨域问题
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#关闭安全校验 
xpack.security.enabled: false
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16

![[image-20241013155310750.png]]

2.创建工作负载

名称:elasticsearch

在这里插入图片描述

这里使用的镜像是elasticsearch:7.17.15(镜像拉取不下来的自己想办法,这里用的是私有镜像仓库)
根据实际需要调整资源限制
在这里插入图片描述

使用默认镜像端口
勾选主机时区
![[image-20241013155914604.png]]

配置环境变量

discovery.type=single-node
ES_JAVA_OPTS=-Xms1024m -Xmx1024m
single-node的配置是只es单节点配置,如果搭建集群,则配置需要修改

在这里插入图片描述

添加数据持久化

![[image-20241013160051421.png]]

名称:elasticsearch-pvc
读写模式
容量:2Gb(根据实际需要自行调整)
读写:/usr/share/elasticsearch/data

![[image-20241013160148005.png]]

挂载字典
![[image-20241013160255058.png]]

选择第一步时添加的配置字典
模式:只读
路径:/usr/share/elasticsearch/config/elasticsearch.yml
子路径:elasticsearch.yml

![[image-20241013160343083.png]]

选择特定键

elasticsearch.yml

一直下一步然后创建
在这里插入图片描述

创建好的工作负载yaml

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: elasticsearch
  namespace: gitee
  labels:
    app: elasticsearch
  annotations:
    kubesphere.io/creator: admin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: elasticsearch
      annotations:
        kubesphere.io/creator: admin
        kubesphere.io/imagepullsecrets: '{"container-pfeuz6":"harbor"}'
        logging.kubesphere.io/logsidecar-config: '{}'
    spec:
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
            type: ''
        - name: volume-r7yv2y
          configMap:
            name: elasticsearch-conf
            items:
              - key: elasticsearch-conf
                path: elasticsearch.yml
            defaultMode: 420
      containers:
        - name: container-pfeuz6
          image: '192.168.21.234:81/tools/elasticsearch:7.17.15'
          ports:
            - name: tcp-9200
              containerPort: 9200
              protocol: TCP
            - name: tcp-9300
              containerPort: 9300
              protocol: TCP
          env:
            - name: discovery.type
              value: single-node
            - name: ES_JAVA_OPTS
              value: '-Xms1024m -Xmx1024m'
          resources:
            limits:
              cpu: '4'
              memory: 2Gi
            requests:
              cpu: '2'
              memory: 2Gi
          volumeMounts:
            - name: host-time
              mountPath: /etc/localtime
            - name: elasticsearch-pvc
              mountPath: /usr/share/elasticsearch/data
            - name: volume-r7yv2y
              readOnly: true
              mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
              subPath: elasticsearch.yml
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      imagePullSecrets:
        - name: harbor
      schedulerName: default-scheduler
  volumeClaimTemplates:
    - kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: elasticsearch-pvc
        namespace: gitee
        creationTimestamp: null
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 2Gi
        storageClassName: local
        volumeMode: Filesystem
      status:
        phase: Pending
  serviceName: elasticsearch-rikg
  podManagementPolicy: OrderedReady
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      partition: 0
  revisionHistoryLimit: 10

3.elasticsearch服务

默认创建的这个直接删掉(弹出的关联项目都不要勾选 仅删除服务!)
在这里插入图片描述

创建自定义服务
在这里插入图片描述

名称:elasticsearch
选择刚添加好的工作负载
在这里插入图片描述

端口号就是9200
在这里插入图片描述

高级设置

两种模式:
1、使用外部模式-NodePort
2、使用应用路由然后本地映射hosts进行访问

为了使用方便所以直接用的应用路由
创建
在这里插入图片描述

创建好的yaml

kind: Service
apiVersion: v1
metadata:
  name: elasticsearch
  namespace: gitee
  labels:
    app: elasticsearch
  annotations:
    kubesphere.io/creator: admin
spec:
  ports:
    - name: http-9200
      protocol: TCP
      port: 9200
      targetPort: 9200
  selector:
    app: elasticsearch
  clusterIP: 10.233.15.26
  clusterIPs:
    - 10.233.15.26
  type: ClusterIP
  sessionAffinity: None
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  internalTrafficPolicy: Cluster

4.应用路由

创建好的yaml

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: elasticsearch
  namespace: gitee
  annotations:
    kubesphere.io/creator: admin
spec:
  rules:
    - host: k8s.els.com
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: elasticsearch
                port:
                  number: 9200

修改hosts
集群ip 自定义域名
在这里插入图片描述

访问k8s.els.com出现一下信息标识els部署成功
在这里插入图片描述

5.部署Kibana

服务-无状态服务
名称:kibana
在这里插入图片描述

这里使用的是kibana:7.17.15版本
cpu、内存 根据情况分配

在这里插入图片描述

使用默认进行端口
同步主机时区

在这里插入图片描述

添加环境变量

ELASTICSEARCH_HOSTS=http://elasticsearch.gitee:9200

这个值并不是固定值而是根据实际情况取到的值,不知道怎么获取的往下继续看

在这里插入图片描述

找到服务中部署的elasticsearch
http://elasticsearch.gitee:9200
就是服务中的DNS加端点的端口号

至于DNS为什么是elasticsearch.gitee拆分出来就是,elasticsearch=服务名,gitee为项目名称

为什么kibana要填http://elasticsearch.gitee:9200这个路径呢,是因为k8s内部服务相互通信时可以直接通过服务进行内部访问

在这里插入图片描述

回到kibana中继续创建,一直下一步下一步 然后直接创建(这里没选外部端口是因为用域名访问更方便所以用应用路由)
在这里插入图片描述

创建应用路由
名称:kibana
域名:k8s.kibana.com
在这里插入图片描述

修改自己电脑的hosts访问k8s.kibana.com出现以下内容代表部署成功

![[image-20241013163454085.png]]


补充:设置kibana为中文

  1. 添加配置字典
    名称:kibana-conf
    键:kibana-conf
    值:
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch.gitee:9200" ]
i18n.locale: "zh-CN"

在这里插入图片描述
2. 修改kibana工作负载
挂载配置字典
在这里插入图片描述
3. 选择刚刚添加的配置字典
路径:/usr/share/kibana/config/kibana.yml
指定子路径:kibana.yml
特定值:kibana.yml
在这里插入图片描述
4. 等待重新部署成功在这里插入图片描述

;