演示示例使用的是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
2.创建工作负载
名称:elasticsearch
这里使用的镜像是elasticsearch:7.17.15(镜像拉取不下来的自己想办法,这里用的是私有镜像仓库)
根据实际需要调整资源限制
使用默认镜像端口
勾选主机时区
配置环境变量
discovery.type=single-node
ES_JAVA_OPTS=-Xms1024m -Xmx1024m
single-node的配置是只es单节点配置,如果搭建集群,则配置需要修改
添加数据持久化
名称:elasticsearch-pvc
读写模式
容量:2Gb(根据实际需要自行调整)
读写:/usr/share/elasticsearch/data
挂载字典
选择第一步时添加的配置字典
模式:只读
路径:/usr/share/elasticsearch/config/elasticsearch.yml
子路径:elasticsearch.yml
选择特定键
elasticsearch.yml
一直下一步然后创建
创建好的工作负载yaml
kind: StatefulSet
apiVersion: apps/v1
metadata:name: elasticsearchnamespace: giteelabels:app: elasticsearchannotations:kubesphere.io/creator: admin
spec:replicas: 1selector:matchLabels:app: elasticsearchtemplate:metadata:creationTimestamp: nulllabels:app: elasticsearchannotations:kubesphere.io/creator: adminkubesphere.io/imagepullsecrets: '{"container-pfeuz6":"harbor"}'logging.kubesphere.io/logsidecar-config: '{}'spec:volumes:- name: host-timehostPath:path: /etc/localtimetype: ''- name: volume-r7yv2yconfigMap:name: elasticsearch-confitems:- key: elasticsearch-confpath: elasticsearch.ymldefaultMode: 420containers:- name: container-pfeuz6image: '192.168.21.234:81/tools/elasticsearch:7.17.15'ports:- name: tcp-9200containerPort: 9200protocol: TCP- name: tcp-9300containerPort: 9300protocol: TCPenv:- name: discovery.typevalue: single-node- name: ES_JAVA_OPTSvalue: '-Xms1024m -Xmx1024m'resources:limits:cpu: '4'memory: 2Girequests:cpu: '2'memory: 2GivolumeMounts:- name: host-timemountPath: /etc/localtime- name: elasticsearch-pvcmountPath: /usr/share/elasticsearch/data- name: volume-r7yv2yreadOnly: truemountPath: /usr/share/elasticsearch/config/elasticsearch.ymlsubPath: elasticsearch.ymlterminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentrestartPolicy: AlwaysterminationGracePeriodSeconds: 30dnsPolicy: ClusterFirstserviceAccountName: defaultserviceAccount: defaultsecurityContext: {}imagePullSecrets:- name: harborschedulerName: default-schedulervolumeClaimTemplates:- kind: PersistentVolumeClaimapiVersion: v1metadata:name: elasticsearch-pvcnamespace: giteecreationTimestamp: nullspec:accessModes:- ReadWriteOnceresources:requests:storage: 2GistorageClassName: localvolumeMode: Filesystemstatus:phase: PendingserviceName: elasticsearch-rikgpodManagementPolicy: OrderedReadyupdateStrategy:type: RollingUpdaterollingUpdate:partition: 0revisionHistoryLimit: 10
3.elasticsearch服务
默认创建的这个直接删掉(弹出的关联项目都不要勾选 仅删除服务!)
创建自定义服务
名称:elasticsearch
选择刚添加好的工作负载
端口号就是9200
高级设置
两种模式:
1、使用外部模式-NodePort
2、使用应用路由然后本地映射hosts进行访问
为了使用方便所以直接用的应用路由
创建
创建好的yaml
kind: Service
apiVersion: v1
metadata:name: elasticsearchnamespace: giteelabels:app: elasticsearchannotations:kubesphere.io/creator: admin
spec:ports:- name: http-9200protocol: TCPport: 9200targetPort: 9200selector:app: elasticsearchclusterIP: 10.233.15.26clusterIPs:- 10.233.15.26type: ClusterIPsessionAffinity: NoneipFamilies:- IPv4ipFamilyPolicy: SingleStackinternalTrafficPolicy: Cluster
4.应用路由
创建好的yaml
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:name: elasticsearchnamespace: giteeannotations:kubesphere.io/creator: admin
spec:rules:- host: k8s.els.comhttp:paths:- path: /pathType: ImplementationSpecificbackend:service:name: elasticsearchport: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出现以下内容代表部署成功
补充:设置kibana为中文
- 添加配置字典
名称: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. 等待重新部署成功