15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > [简单易用] 在Kubernetes平台快速搭建ES

[简单易用] 在Kubernetes平台快速搭建ES

时间:2023-05-30 11:03:01 | 来源:网站运营

时间:2023-05-30 11:03:01 来源:网站运营

[简单易用] 在Kubernetes平台快速搭建ES:【本篇文章共计1164字,内容开箱即用,其中涉及实际操作,建议先收藏再看】

一、概述

Elasticsearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,是最受欢迎的企业搜索引擎。对于 Elasticsearch ,官方推出了基于 Kubernetes Operator 的应用Elastic Cloud on Kubernetes (ECK),用户可使用该产品在 Kubernetes 上配置、管理和运行 Elasticsearch 集群。本文中部署流程基于已有的k8s集群。


二、部署环境及ES常用参数说明

Kubernetes:v1.19.2
docker:v19.03.2
ES:v7.6.1
linux:v4.18.20
cluster.name:// 集群名称,只有集群名称相同的节点才可加入同一个集群。
node.name:// 节点名称,表示集群内的节点名称,应保证同一集群内唯一。
network.host:// es监听的IP地址。默认为localhost,即只监听本地换回地址。
discovery.seed_hosts:// 节点发现地址。es通过查找该数组发现其他es节点。该参数包括所有master候选节点。
ps:如果discovery.seed_hosts是一个域名,且该域名解析到多个IP地址,那么es将处理其所有解析的IP地址。

在ES集群初始化阶段,会进行节点发现并选举出master。其关联参数为:

cluster.initial_master_nodes:node.name数组 // 初始化集群时,es将从该数组中选择出master。
在选举出master后,es即进入正常运行状态。其他节点仍可通discovery.seed_hosts参数加入集群。


三、ECK部署流程

执行如下命令,安装成功后,会自动创建一个 elastic-system 的 namespace 以及一个 operator 的 Pod。

kubectl apply –f https://download.elastic.co/downloads/eck/1.2.1/all-in-one.yaml查看运行状态:

执行如下指令创建应用实例:

kubectl create –f es-test.yamlyaml文件如下所示,若要部署自己的Elasticsearch实例,需要修改yaml文件的参数:

metadata.name确保实例名称唯一。
spec.http.service.spec.ports[0].nodePort确保对外暴露nodePort端口唯一,其他配置可根据实际需要自行修改,也可不做修改。
部署完成后pod为running状态,通过ip+port可正常访问则说明部署成功。

apiVersion: elasticsearch.k8s.elastic.co/v1kind: Elasticsearchmetadata: name: es-ylj namespace: elastic-systemspec: version: 7.6.1 image: ccr.ccs.tencentyun.com/staightchen/elasticsearch:7.6.1 http: tls: selfSignedCertificate: disabled: true service: spec: type: NodePort ports: - name: http nodePort: 31133 port: 9200 protocol: TCP targetPort: 9200 nodeSets: - name: data count: 3 config: node.master: true node.data: true node.ingest: true node.store.allow_mmap: false podTemplate: spec: volumes: - name: elasticsearch-data emptyDir: {} containers: - name: elasticsearch command: - bash - /'-c/' - >- sed -i /'s/enabled: "true"$/enabled: "false"/g/' config/elasticsearch.yml;/usr/local/bin/docker-entrypoint.sh resources: requests: cpu: 6 memory: 24Gi limits: cpu: 6 memory: 24Gi 验证pod为running状态







通过ip+port可正常访问





Kibana 是一个免费且开放的用户界面,在使用Elasticsearch的同时,可通过Kibana对ES集群及数据进行可视化的管理,查询,和跟踪。我们同样可以在Kubernetes平台快速搭建这一工具。

kubectl create –f es-ylj-kibana.yamlyaml文件如下,其中sepc.name指定访问的ES实例,部署成功后通过ip+port可打开kibana页面,通过控制台获取ES信息,则说明部署成功。

apiVersion: kibana.k8s.elastic.co/v1kind: Kibanametadata: name: kibana-volatile-demo namespace: elastic-systemspec: version: 7.6.1 image: ccr.ccs.tencentyun.com/staightchen/kibana:7.6.1 count: 1 elasticsearchRef: name: "es-ylj" http: tls: selfSignedCertificate: disabled: true service: spec: type: NodePort ports: - name: http nodePort: 31134 port: 5601 protocol: TCP targetPort: 5601使用ip+port访问,验证可用性:

通过kibana的控制台获取es集群信息:


四、 部署过程遇到的问题及解决方法

1、部署ES后报错” pod has unbound immediate PersistentVolumeClaims (repeated 4 times)”

解决方法:手动创建符合条件的pv,或者在yaml文件中指定使用emptyDir

2、部署后pod不断重启

确定重启原因,常见原因如:

解决办法:在yaml中调大es容器的内存配额

解决办法:对于设置了label的pod和node,需要确认pod和node的label是否匹配。此时可查看集群内node是否处于可调度状态,以及pod的亲和性策略与node的label是否匹配。

解决办法:此问题是由于设置了存活探针,但检测时出现异常导致。可检查存活探针具体的检测策略是否失败,如网络异常等。


五、参考资料

1、https://www.elastic.co/guide/en/cloud-on-k8s/1.2/k8s-deploy-elasticsearch.html

关键词:平台,简单

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭