KubeSphere - 搭建 elasticsearch集群 及 kibana

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KubeSphere - 搭建 elasticsearch集群 及 kibana相关的知识,希望对你有一定的参考价值。

一、KubeSphere - 搭建 elasticsearch集群 及 kibana

上篇文章我们介绍了通过 KubeSpherek8s 集群中搭建 redis 集群,本篇文章我们介绍下通过 KubeSpherek8s 集群中搭建 elasticsearch 集群及可视化工具 kibana,下面是上篇文章的地址:

https://blog.csdn.net/qq_43692950/article/details/122819844

在实验开始前,请确保已经安装完成了k8skubesphere 环境:


我们搭建三节点的集群结构,三个节点的node.masternode.data 都是为 true,由于es的配制文件中node.name是唯一的,如果不指定node.name的话默认使用的当前主机的hostname而在k8shostname即为当前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_nodesdiscovery.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 - 搭建 Redis 集群

KubeSphere - 搭建 mysql 主从复制结构

KubeSphere - 搭建 elasticsearch集群 及 kibana

KubeSphere - 使用 kubekey 搭建 k8s 集群 及 kubeSphere

使用 KubeKey 搭建 Kubernetes/KubeSphere 环境的"心路(累)历程"

使用vagrant搭建k8s节点七-----KubeSphere完整化安装