KubeSphere - 搭建 elasticsearch集群 及 kibana
Posted 小毕超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KubeSphere - 搭建 elasticsearch集群 及 kibana相关的知识,希望对你有一定的参考价值。
一、KubeSphere - 搭建 elasticsearch集群 及 kibana
上篇文章我们介绍了通过 KubeSphere
在 k8s
集群中搭建 redis
集群,本篇文章我们介绍下通过 KubeSphere
在 k8s
集群中搭建 elasticsearch
集群及可视化工具 kibana
,下面是上篇文章的地址:
在实验开始前,请确保已经安装完成了k8s
及 kubesphere
环境:
我们搭建三节点的集群结构,三个节点的node.master
和node.data
都是为 true
,由于es的配制文件中node.name
是唯一的,如果不指定node.name
的话默认使用的当前主机的hostname
而在k8s
中 hostname
即为当前pod
容器的名称,所以在这里我们可以在elasticsearch.yml
中 不指定node.name
,让他默认使用 hostname
,而在部署时我们采用有状态headless
的方式,使用headless
的 DNS 进行 集群的通信地址。
下面就开始搭建吧!
二、创建 elasticsearch.yml
配制字典
添加数据,键填写 elasticsearch.yml
,值写入以下内容:
#集群名称
cluster.name: cluster-es
#节点名称,每个节点的名称不能重复,这里不指定,使用当前主机的名称
# node.name:
#ip 地址,每个节点的地址不能重复
network.host: 0.0.0.0
#是不是有资格主节点
node.master: true
node.data: true
http.port: 9200
# head 插件需要这打开这两个配置,解决跨域问题
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["elasticsearch-v1-0"]
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["elasticsearch-v1-0.elasticsearch.test-project.svc.cluster.local:9300","elasticsearch-v1-1.elasticsearch.test-project.svc.cluster.local:9300","elasticsearch-v1-2.elasticsearch.test-project.svc.cluster.local:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
#集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
注意其中的 cluster.initial_master_nodes
和 discovery.seed_hosts
由于是有状态服务,这里的域名格式为:
(podname).(headless server name).(namespace).svc.cluster.local
而 podname
即为
创建服务时指定的容器名称-版本-序号
注意下面创建服务时的服务名称和容器名称的填写,根据上面我的配制,下面服务的名称和容器名称都是 elasticsearch
,服务版本为 v1
。
三、创建 elasticsearch
服务
创建有状态服务:
指定服务的名称为elasticsearch
,版本为 v1
:
由于我们搭建三节点的集群,下面容器的数量选择 3 :
下面镜像我选择的时 elasticsearch:7.14.0
的版本,使用默认端口,并指定容器的名称为elasticsearch
:
下面设置JVM 的环境变量 ES_JAVA_OPTS
为 -Xms256m -Xmx256m
,具体根据你服务的大小来设定:
然后下一步,选择存储模板,让每个生成的容器都能挂载自己的PVC:
挂载到 /usr/share/elasticsearch/data
下面挂载 elasticsearch.yml
配制文件:
挂载的路径为 /usr/share/elasticsearch/config/elasticsearch.yml
,并指定子路径也为 elasticsearch.yml
指定特定键,如果配制字典的 键就为 elasticsearch.yml
,可不指定。
然后下一步,创建。
点击服务进入详情,即可看到创建的容器:
此时可以随便进入一个容器的终端中,访问 curl http://elasticsearch-v1-0.elasticsearch.test-project.svc.cluster.local:9200/_cat/nodes?pretty
查看集群的状态:
可以看到集群已经搭建成功,并且主节点也是我们指定的 elasticsearch-v1-0
节点。
四、创建 kibana 服务
上面已经搭建好了 elasticsearch
集群,如果需要可视化,我们还需搭建 kibana
,这里直接创建 无状态服务:
同样指定服务的名称:
容器数选 1 个,镜像和es 选择一个版本:kibana:7.14.0
,使用默认的端口:
下面环境变量需要设置 es的地址:ELASTICSEARCH_URL
,可以指定其中一个节点:http://elasticsearch-v1-0.elasticsearch.test-project.svc.cluster.local:9200
然后下一步,这里就不挂载存储卷了,下一步,由于我们需要在外面访问kibana
页面,这里需要 选择外部访问,NodePort
模式:
然后创建,点击服务即可看到释放的端口:
下面可以在其他电脑上访问:http://192.168.40.130:30340
已经成功打开 kibana
服务。
五、测试
使用 kibana
创建一个 testindex
索引:
查看 testindex
索引信息:
向 testindex
索引中添加数据:
查询添加的数据:
喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!
以上是关于KubeSphere - 搭建 elasticsearch集群 及 kibana的主要内容,如果未能解决你的问题,请参考以下文章
KubeSphere - 搭建 elasticsearch集群 及 kibana
KubeSphere - 使用 kubekey 搭建 k8s 集群 及 kubeSphere