资讯动态

K8s 部署 elasticsearch-7.14.0 集群 及 kibana 客户端

发布时间:2026/10/27 18:18:38 来源:尧图企业网站定制
一、K8s 部署 elasticsearch-7.14.0 集群安装规划组件replicas类型es3StatefulSetkibana1Deployment使用k8s版本为v1.18.0。本次使用OpenEBS来作为存储引擎OpenEBS是一个开源的、可扩展的存储平台它提供了一种简单的方式来创建和管理持久化存储卷。它支持各种存储后端包括但不限于ZFS、Btrfs、XFS等。同时OpenEBS具有高度的可扩展性和可配置性可以满足不同的存储需求。安装OpenEBSkubectl apply-fhttps://openebs.github.io/charts/openebs-operator.yaml验证OpenEBS是否正确安装kubectl get pods-nopenebs所有的OpenEBS pods都处于Running状态表示正常。1. 创建命名空间vies-ns.ymlapiVersion:v1kind:Namespacemetadata:name:eslabels:name:eskubectl apply-fes-ns.yml查看命名空间kubectl get ns2. 创建存储卷使用OpenEBS本地存储模式vies-local-storage.ymlapiVersion:storage.k8s.io/v1kind:StorageClassmetadata:name:es-local-storageannotations:openebs.io/cas-type:localcas.openebs.io/config:|- name: StorageType value: hostpath - name: BasePath value: /data/openebs/esprovisioner:openebs.io/localreclaimPolicy:DeletevolumeBindingMode:WaitForFirstConsumerkubectl apply-fes-local-storage.yml查看存储卷kubectl get sc3. 创建 ConfigMap 配置主要声明elasticsearch.yml配置文件vies-config.ymlapiVersion:v1kind:ConfigMapmetadata:name:es-confignamespace:eslabels:app:es-configdata:elasticsearch.yml:|#集群名称cluster.name:cluster-es#节点名称每个节点的名称不能重复这里不指定使用当前主机的名称# node.name:#ip 地址每个节点的地址不能重复network.host:0.0.0.0#是不是有资格主节点node.master:truenode.data:truehttp.port:9200# head 插件需要这打开这两个配置,解决跨域问题http.cors.allow-origin:*http.cors.enabled:truehttp.max_content_length:200mb#es7.x 之后新增的配置初始化一个新的集群时需要此配置来选举 mastercluster.initial_master_nodes:[es-0]#es7.x 之后新增的配置节点发现discovery.seed_hosts:[es-0.es-svc.es.svc.cluster.local:9300,es-1.es-svc.es.svc.cluster.local:9300,es-2.es-svc.es.svc.cluster.local:9300]gateway.recover_after_nodes:2network.tcp.keep_alive:truenetwork.tcp.no_delay:truetransport.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注意这里的集群间的访问使用域名es-X.es-svc.es.svc.cluster.local格式为(podname).(headless server name).(namespace).svc.cluster.local所以注意下面创建Headless Service服务名字需要为es-svcStatefulSet中Pod的名字需要为es。kubectl apply-fes-config.yml查看 ConfigMapkubectl get cm-nes4. 创建 Service 服务这里需要创建两个一个用于集群建访问的Headless Service一个用于外部访问的NodePort Service:vies-svc.yml# headless serviceapiVersion:v1kind:Servicemetadata:name:es-svcnamespace:eslabels:app:es-svcspec:clusterIP:Noneports:-name:rest-portport:9200-name:cluster-portport:9300selector:app:es---# NodePort serviceapiVersion:v1kind:Servicemetadata:name:es-svc-nodeportnamespace:eslabels:app:es-svcspec:clusterIP:ports:-name:rest-portport:9200nodePort:31920targetPort:9200selector:app:estype:NodePorttarget-port:externalTrafficPolicy:Cluster# Local 只有所在node可以访问Cluster 公平转发kubectl apply-fes-svc.yml查看创建的Servicekubectl get svc-nes5. 创建 StatefulSet 应用vies-sfe.ymlapiVersion:apps/v1kind:StatefulSetmetadata:name:esnamespace:esspec:serviceName:es-svc#填写无头服务的名称replicas:3selector:matchLabels:app:estemplate:metadata:labels:app:esspec:containers:-name:esimage:elasticsearch:7.14.0ports:-containerPort:9200name:es-rest-port-containerPort:9200name:es-cluster-portenv:-name:ES_JAVA_OPTSvalue:-Xms1g -Xmx1gvolumeMounts:-name:es-config#挂载配置mountPath:/usr/share/elasticsearch/config/elasticsearch.ymlsubPath:elasticsearch.yml-name:es-data#挂载数据mountPath:/usr/share/elasticsearch/datavolumes:-name:es-configconfigMap:name:es-configvolumeClaimTemplates:-metadata:name:es-dataspec:accessModes:[ReadWriteOnce]storageClassName:es-local-storageresources:requests:storage:5Gi这里使用volumeClaimTemplates动态创建pv和pvc。kubectl apply-fes-sfe.yml查看 statefulset kubectl get statefulset-nes查看 podkubectl get pods-nes使用http请求验证es服务是否正常http://ip:31920/_cluster/health?pretty从结果上可以看出ES启动正常。二、K8s 部署 kibana 客户端1. 创建 Service 服务vikibana-svc.ymlapiVersion:v1kind:Servicemetadata:name:kibana-svc-nodeportnamespace:eslabels:app:kibana-svcspec:clusterIP:ports:-name:kibanaport:5601nodePort:31561targetPort:5601selector:app:kibanatype:NodePorttarget-port:externalTrafficPolicy:Cluster# Local 只有所在node可以访问Cluster 公平转发kubectl apply-fkibana-svc.yml2. 创建 Deployment 应用vikibana-dm.ymlapiVersion:apps/v1kind:Deploymentmetadata:name:kibananamespace:esspec:replicas:1selector:matchLabels:app:kibanatemplate:metadata:labels:app:kibanaspec:containers:-name:kibanaimage:kibana:7.14.0ports:-containerPort:5601name:ui-portenv:-name:ELASTICSEARCH_HOSTSvalue:http://es-0.es-svc.es.svc.cluster.local:9200kubectl apply-fkibana-dm.yml查看 pod kubectl get pods-nes下面在浏览器访问 kibana 页面http://ip:31561/三、测试使用kibana创建一个test_index索引PUT /test_index查看test_index索引信息GET /test_index向test_index索引中添加数据PUT /test_index/user/1{name:张三,age:15,sex:男}查询添加的数据GET /test_index/user/1

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑