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

一、K8s 部署 elasticsearch-7.14.0 集群

安装规划

组件replicas类型
es3StatefulSet
kibana1Deployment

使用 k8s 版本为:v1.18.0

本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创建和管理持久化存储卷。它支持各种存储后端,包括但不限于 ZFSBtrfsXFS 等。同时,OpenEBS 具有高度的可扩展性和可配置性,可以满足不同的存储需求。

安装 OpenEBS

kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml

验证OpenEBS是否正确安装:

kubectl get pods -n openebs

在这里插入图片描述
所有的 OpenEBS pods 都处于Running状态表示正常。

1. 创建命名空间

vi es-ns.yml
apiVersion: v1
kind: Namespace
metadata:name: eslabels:name: es
kubectl apply -f es-ns.yml

查看命名空间:

kubectl get ns

在这里插入图片描述

2. 创建存储卷

使用 OpenEBS 本地存储模式:

vi es-local-storage.yml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: es-local-storageannotations:openebs.io/cas-type: localcas.openebs.io/config: |- name: StorageTypevalue: hostpath- name: BasePathvalue: /data/openebs/es 
provisioner: openebs.io/local
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
kubectl apply -f es-local-storage.yml

查看存储卷:

kubectl get sc

在这里插入图片描述

3. 创建 ConfigMap 配置

主要声明 elasticsearch.yml 配置文件:

vi es-config.yml
apiVersion: v1
kind: ConfigMap
metadata:name: es-confignamespace: eslabels:app: es-config
data: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-svcStatefulSetPod 的名字需要为 es

kubectl apply -f es-config.yml

查看 ConfigMap:

kubectl get cm -n es

在这里插入图片描述

4. 创建 Service 服务

这里需要创建两个,一个用于集群建访问的 Headless Service ,一个用于外部访问的 NodePort Service :

vi es-svc.yml
# headless service 
apiVersion: v1
kind: Service
metadata:name: es-svcnamespace: eslabels:app: es-svc
spec:clusterIP: Noneports:- name: rest-portport: 9200- name: cluster-portport: 9300selector:app: es---
# NodePort service 
apiVersion: v1
kind: Service
metadata:name: es-svc-nodeportnamespace: eslabels:app: es-svc
spec:clusterIP: ports:- name: rest-portport: 9200nodePort: 31920targetPort: 9200selector:app: estype: NodePorttarget-port:externalTrafficPolicy: Cluster # Local 只有所在node可以访问,Cluster 公平转发
kubectl apply -f es-svc.yml

查看创建的 Service

kubectl get svc -n es

在这里插入图片描述

5. 创建 StatefulSet 应用

vi es-sfe.yml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: esnamespace: es
spec: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 -Xmx1g"volumeMounts:                           - name: es-config     #挂载配置mountPath: /usr/share/elasticsearch/config/elasticsearch.ymlsubPath: elasticsearch.yml- name: es-data       #挂载数据mountPath: /usr/share/elasticsearch/data volumes:- name: es-configconfigMap:                                name: es-configvolumeClaimTemplates:- metadata:name: es-dataspec:accessModes: ["ReadWriteOnce"]storageClassName: es-local-storageresources:requests:storage: 5Gi

这里使用 volumeClaimTemplates 动态创建 pvpvc

kubectl apply -f es-sfe.yml

查看 statefulset :

kubectl get statefulset -n es

在这里插入图片描述

查看 pod:

kubectl get pods -n es

在这里插入图片描述

使用 http 请求验证 es 服务是否正常:

http://ip:31920/_cluster/health?pretty

在这里插入图片描述

从结果上可以看出 ES 启动正常。

二、K8s 部署 kibana 客户端

1. 创建 Service 服务

vi kibana-svc.yml
apiVersion: v1
kind: Service
metadata:name: kibana-svc-nodeportnamespace: eslabels:app: kibana-svc
spec:clusterIP: ports:- name: kibanaport: 5601nodePort: 31561targetPort: 5601selector:app: kibanatype: NodePorttarget-port:externalTrafficPolicy: Cluster # Local 只有所在node可以访问,Cluster 公平转发
kubectl apply -f kibana-svc.yml

2. 创建 Deployment 应用

vi kibana-dm.yml
apiVersion: apps/v1
kind: Deployment
metadata:name: kibananamespace: es
spec: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:9200
kubectl apply -f kibana-dm.yml

查看 pod :

kubectl get pods -n es

在这里插入图片描述

下面在浏览器访问 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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内首款千亿参数MoE模型APUS-xDAN-4.0:性能逼近GPT-4,可在4090显卡上运行

前言 随着人工智能技术的快速发展,模型参数的数量已成为衡量其复杂性和处理能力的重要指标。近日,国内科技企业APUS与AI创企新旦智能联合宣布,成功开源了国内首个千亿参数的混合专家模型(MoE),APUS-xDAN-4…

python遍历文件夹的几种方法

方法1: 遍历目录下的所有文件,包含子目录 ,显示为绝对路径 import osdef get_files_from_dir(dir):if not os.path.exists(dir):return file_paths []for root, directories, files in os.walk(dir):for filename in files:filepath os.p…

锁策略和死锁问题

锁策略 乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁 vs 互斥锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁死锁死锁产生的必要条件如何简单的解决死锁问题 小结 这里不是描述的某个特定锁,而是描述的锁的特性,描述的是"一类锁". 乐观锁 vs 悲观…

Java配置环境变量的过程

第一步:先找到你下载java的文件夹。 第二步:点击它进入看到新的文件夹继续点击。 第三步:点击bin文件。 第四步:点进去bin文件之后复制上述文件的地址。 第五步:回到你的电脑位置右键鼠标点击空白位置出现属性点进去 第…

设计模式胡咧咧之策略工厂实现导入导出

策略模式(Strategy Pattern) 定义: 定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。 本质: 分离算法,选择实现 应用场景 何时使用 一个系统有许多类,而区分他们的只是他们直接…

Ubuntu22.04.4 - MySQL8 - 笔记

MySQL8在Ubuntu22.04.4环境下的笔记 一、安装 sudo apt update sudo apt install mysql-server sudo systemctl status mysql 二、卸载 sudo apt remove --purge mysql-* sudo apt autoremove dpkg --list | grep mysql查询是否还存在相关的依赖组件 dpkg -l |grep ^rc|awk {p…

复合机器人在磁钢上下料中的应用及其优势分析

复合机器人是一种集成了移动机器人和工业机器人功能的设备,其独特之处在于拥有“手、脚、眼、脑”的综合能力,从而实现了更高的灵活性和操作效率。在磁钢上下料的应用场景中,复合机器人能够发挥显著的优势。 首先,复合机器人可以根…

Photomator 3.3.5 (macOS Universal) - 照片编辑软件

Photomator 3.3.5 (macOS Universal) - 照片编辑软件 适用于 Mac、iPhone 和 iPad 的终极照片编辑器 请访问原文链接:https://sysin.org/blog/photomator/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Photomat…

Nodejs 第六十五章(SDL单设备登录)

单设备登录 SDL(Single Device Login)是一种单设备登录的机制,它允许用户在同一时间只能在一个设备上登录,当用户在其他设备上登录时,之前登录的设备会被挤下线。 应用场景 视频影音,防止一个账号共享&a…

关于项目中加入线程池,导致JVM性能急剧下降的问题

在项目中,为了提高新系统服务的并发处理能力,我在项目中加入了线程池。 由于原来的项目是单线程的一个服务,或者说是一个少线程的服务. 所以公司前辈,将jvm的TLAB 参数配置进行关闭了。 TLAB(Thread Local Allocation …

计算机网络 -- 网络编程基础

一 学习准备 1.1 IP地址 在 前文中我们提到过: IP 是全球网络的基础,使用 IP 地址来标识公网环境下主机的唯一性,我们可以根据 目的IP地址 进行跨路由器的远端通信。 但是我们也提到了,通过 IP 地址,只能寻找到目标主机&#xff…

视频质量度量VQM算法详细介绍

视频质量评价 视频质量评价(Video Quality Assessment,VQA)是指通过主观、客观的方式对视频图像的内容、画质等,进行感知、衡量与评价。 ITU definations subjective assessment: the determination of the quality or impairment of programme-like pictures presented…

MASA Framework-原理分析(6)

MASA Framework的原理分析主要涉及到其核心组件、架构设计和运行机制等多个方面。以下是对MASA Framework原理的深入解析: 1. 核心组件与功能 MASA Framework的核心组件包括服务容器、数据存储、消息队列以及监控和管理工具等。这些组件共同协作,为开发…

桌面应用框架概论

目录 桌面应用框架概论 1.介绍 2.优缺点 3.总结 桌面应用框架概论 1.介绍 桌面应用框架种类繁多,以下是一些主要的框架: Electron:这是一个用于创建跨平台桌面应用的开源框架。它允许开发者使用Web技术(HTML、CSS和JavaScript)来构建桌面应用程序,使得桌面应用的开…

字符串的一些有趣案例

文章目录 简介删除文本中的括号和其中的文本 简介 分享python 字符串操作的一些有趣的案例: 正则表达式format … 删除文本中的括号和其中的文本 存在中英文括号混用,故要考虑到所有可能到情况 import re def remove_all_parentheses(text): # 正…

MongoDB聚合运算符:$replaceOne

MongoDB聚合运算符:$replaceOne 文章目录 MongoDB聚合运算符:$replaceOne语法参数字段说明 使用$replaceOne 与 Null$replaceOne 和排序规则$replaceOne 和 Unicode 规范化 举例 $replaceOne聚合运算在输入的字符串中搜索目标字符串,并使用指…

【代码随想录】【动态规划】day48:打家劫舍

打家劫舍1 def rob(self, nums):""":type nums: List[int]:rtype: int"""# 分为两个情况,偷还是不偷,# dp[i]为考虑到第i个房间时的最大值if len(nums) 0: # 如果没有房屋,返回0return 0if len(nums) 1: #…

【 书生·浦语大模型实战营】作业(五):LMDeploy 量化部署

【 书生浦语大模型实战营】作业(五):LMDeploy 量化部署 🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系…

Linux debian gdb dump

1.开发背景 记录 debian 下应用程序崩溃调试方法 2.开发需求 程序越界可以定位到越界的位置附近 3.开发环境 debian 操作系统,如果不支持需要查看是否存在对应的可执行文件 4.实现步骤 4.1 设置 dump 输出大小 ulimit -c unlimited # 设置输出大小 生成core 文…

【QT+OpenCV】车牌号检测 学习记录 遇到的问题

【QTOpenCV】车牌号检测 学习记录 首先在QT里面配置好OpenCV .pro文件中加入: INCLUDEPATH G:/opencv/build/include LIBS -L"G:/opencv/build/x64/vc14/lib"\-lopencv_core \-lopencv_imgproc \-lopencv_highgui \-lopencv_ml \-lopencv_video \-lo.c…