在k8s中部署单机版Elasticsearch,并进行数据持久化

🐇明明跟你说过:个人主页

🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、Elasticsearch简介

2、k8s简介

二、存储准备

1、创建PV

2、创建PVC 

三、部署Elasticsearch

1、编写YAML文件

2、创建elasticsearch

3、为es创建Service

4、访问测试 


 

一、引言

1、Elasticsearch简介

Elasticsearch 是一个开源的分布式搜索和分析引擎,最初由 Elasticsearch N.V. 公司开发,并于 2010 年首次发布。它建立在 Apache Lucene 基础之上,提供了分布式的实时搜索和分析功能,被广泛应用于各种场景,包括日志分析、全文搜索、监控和可视化等。

以下是 Elasticsearch 的一些重要特点和功能:

1. 分布式架构:

  • Elasticsearch 是一个分布式系统,数据可以水平扩展到多个节点上存储和处理。
  • 数据被分割成多个分片(Shard),每个分片可以被复制到多个副本(Replica),以提高数据的可用性和容错性。

2. 实时搜索:

  • Elasticsearch 提供了快速的实时搜索功能,可以在大规模数据集上快速地进行搜索、过滤和排序。
  • 支持复杂的搜索查询语法和全文搜索功能,可以满足各种搜索需求。

3. 多种数据类型:

  • Elasticsearch 支持多种数据类型的存储和索引,包括文本、数字、日期、地理位置等。
  • 支持结构化数据和非结构化数据的索引和查询。

4. 强大的聚合和分析:

  • Elasticsearch 提供了丰富的聚合(Aggregation)功能,可以对数据进行统计、分组、计算等操作。
  • 支持各种聚合函数和桶(Bucket)操作,可以生成复杂的数据分析报表和可视化。

5. RESTful API:

  • Elasticsearch 提供了基于 RESTful API 的接口,支持各种 HTTP 请求和 CRUD 操作。
  • 开发者可以使用各种编程语言和工具与 Elasticsearch 进行交互,实现数据的索引、搜索和分析。

6. 可扩展性和灵活性:

  • Elasticsearch 提供了丰富的插件和扩展机制,可以根据需求定制和扩展功能。
  • 支持与其他开源工具和系统集成,如 Logstash、Kibana、Beats 等,构建完整的日志分析和监控解决方案。

2、k8s简介

Kubernetes单词起源于希腊语, 是“舵手”或者“领航员、飞行员”的意思。

Kubernetes(简称K8s)的前世今生可以追溯到谷歌(Google)内部的一个项目,它起源于2003年,当时谷歌正面临着不断增长的应用程序和服务的管理挑战。这个项目最初被称为"Borg",是一个早期的容器编排系统。Borg 的成功经验成为 Kubernetes 开发的契机。

 有关k8s起源的介绍,请参考《初识K8s之前世今生、架构、组件、前景》这篇文章

​​​

Kubernetes的优点包括可移植性、可伸缩性和扩展性。它使用轻型的YAML清单文件实现声明性部署方法,对于应用程序更新,无需重新构建基础结构。管理员可以计划和部署容器,根据需要扩展容器并管理其生命周期。借助Kubernetes的开放源代码API,用户可以通过首选编程语言、操作系统、库和消息传递总线来构建应用程序,还可以将现有持续集成和持续交付(CI/CD)工具集成。

二、存储准备

1、创建PV

编辑YAML文件,创建PV,用于ES数据存储使用

apiVersion: v1
kind: PersistentVolume
metadata:name: nfs-pv
spec:capacity:storage: 5Gi  # 指定存储容量volumeMode: FilesystemaccessModes:- ReadWriteMany  # 允许多个节点同时读写nfs:path: /data/csdn  # NFS 服务器上的共享路径server: 192.168.40.132 # NFS 服务器的地址

 

在这个 YAML 文件中:

  • apiVersion:指定 Kubernetes API 的版本。
  • kind:指定资源类型,这里是 PersistentVolume。
  • metadata:指定持久卷的元数据,包括名称等。
  • spec:指定持久卷的规格。
  • capacity:指定存储容量。
  • volumeMode:指定卷的模式,这里是文件系统模式。
  • accessModes:指定访问模式,这里是 ReadWriteMany,表示多个节点可以同时读写。
  • persistentVolumeReclaimPolicy:指定持久卷回收策略,这里是 Retain,表示删除 PVC 后保留持久卷数据。
  • storageClassName:指定存储类名称,后续 PVC 可以引用该名称。
  • nfs:指定 NFS 存储的详细信息。
  • path:指定 NFS 服务器上的共享路径。
  • server:指定 NFS 服务器的地址。

 

将以上内容保存到一个 YAML 文件中,例如 nfs-pv.yaml,然后可以使用 kubectl apply -f nfs-pv.yaml 命令在 Kubernetes 集群中创建这个持久卷。

2、创建PVC 

编写YAML文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nfs-pvc
spec:accessModes:- ReadWriteMany  # 与 PV 的访问模式匹配resources:requests:storage: 2Gi  # 请求的存储容量

在这个 YAML 文件中:

  • apiVersion:指定 Kubernetes API 的版本。
  • kind:指定资源类型,这里是 PersistentVolumeClaim。
  • metadata:指定持久卷声明的元数据,包括名称等。
  • spec:指定持久卷声明的规格。
  • accessModes:指定访问模式,这里是 ReadWriteMany,与对应的 PV 的访问模式匹配。
  • resources.requests.storage:指定请求的存储容量,这里是 2Gi,表示请求至少 2GB 的存储容量。


将以上内容保存到一个 YAML 文件中,例如 nfs-pvc.yaml,然后可以使用 kubectl apply -f nfs-pvc.yaml 命令在 Kubernetes 集群中创建这个持久卷声明。创建成功后,Kubernetes 将会自动将该 PVC 与对应的 PV 进行绑定。

三、部署Elasticsearch

1、编写YAML文件

apiVersion: apps/v1  
kind: Deployment  
metadata:  name: elasticsearch  labels:  app: elasticsearch  
spec:  replicas: 1  selector:  matchLabels:  app: elasticsearch  template:  metadata:  labels:  app: elasticsearch  spec:  containers:  - name: elasticsearch  image: elasticsearch:7.17.18  # 使用合适的版本  ports:  - containerPort: 9200  name: http  - containerPort: 9300  name: transport  volumeMounts:  - name: elasticsearch-data  mountPath: /usr/share/elasticsearch/data  env:  - name: "discovery.type"  value: "single-node"  - name: "node.name"  value: "elasticsearch-node"  # 根据需要添加其他环境变量和配置  volumes:  - name: elasticsearch-data  persistentVolumeClaim:  claimName: nfs-pvc  

在这个文件中:

  • apiVersion kind 分别指定了 Kubernetes 资源的 API 版本和类型,这里是 Deployment。
  • metadata 部分包含了该 Deployment 的元数据,如名称和标签。
  • spec 部分指定了 Deployment 的规格,包括副本数量、选择器、容器模板等。
  • replicas 指定了副本数量,这里是 1。
  • selector 指定了用于选择 Pod 的标签。
  • template 包含了 Pod 的模板规格,包括容器、卷等。
  • containers 中描述了要在 Pod 中运行的容器。
  • image 指定了 Elasticsearch 容器的镜像。
  • ports 定义了容器的端口映射。
  • volumeMounts 定义了将持久卷挂载到容器的路径。
  • env 中定义了容器的环境变量。
  • volumes 中定义了持久卷声明,这里使用了之前创建的名为 nfs-pvc 的持久卷声明。

2、创建elasticsearch

[root@master csdn]# kubectl  apply -f  es.yaml

查看Pod状态

3、为es创建Service

这一步是为了能在集群外部使用es

编写创建Service的YAML文件

apiVersion: v1
kind: Service
metadata:name: elasticsearchlabels:app: elasticsearch
spec:type: NodePortports:- port: 9200name: httpselector:app: elasticsearch

在这个文件中:

  • apiVersion kind 分别指定了 Kubernetes 资源的 API 版本和类型,这里是 Service。
  • metadata 部分包含了该 Service 的元数据,如名称和标签。
  • spec 部分指定了 Service 的规格。
  • type: NodePort 指定了 Service 的类型为 NodePort,这意味着该 Service 将会在每个节点上开放一个相同的端口,外部可以通过节点的 IP 地址和端口访问 Service。
  • ports 定义了 Service 监听的端口,这里指定了端口号为 9200,并命名为 http。
  • selector 指定了该 Service 应该路由流量到哪些 Pod。在这个例子中,它将流量路由到具有 app: elasticsearch 标签的 Pod。

创建Service

 

[root@master csdn]# kubectl  apply -f  es.yaml

查看svc,找到nodeport端口

[root@master csdn]# kubectl get svc

4、访问测试 

在浏览器输入node节点的IP加svc的端口

如果可以访问到es的Web界面,则部署成功

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Kubernetes的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

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

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

相关文章

德昂信息-Wyn助力构建HR人员信息分析看板

”葡萄城的Wyn商业智能软件产品为德昂信息提供了强大的支持,借助Wyn商业智能软件,可以通过可视化方式展示整个公司的人员信息及其分析看板。“ ——德昂信息技术(北京)有限公司 公司简介 德昂信息技术(北京)有限公司(以下简称德昂信息&…

Web前端开发 - 4 - CSS3动画

CSS3动画 一、 设计2D变换二、 设计3D变换三、 设计过渡动画四、设计帧动画 一、 设计2D变换 transform : none | <transform-function> /* <transform-function> 设置变换函数&#xff0c;可以是一个或多个变换函数列表。函数包括: martrix(x缩放,x倾斜,y倾斜,y…

Chromium 调试指南2024 Windows11篇-调试变量监视(十)

1. 前言 设置断点和监视变量是调试过程中常用的两种技术手段。通过设置断点&#xff0c;我们可以暂停程序的执行并检查程序的内部状态&#xff0c;而监视变量则可以帮助我们实时查看程序中关键变量的值。本文将介绍如何在Chromium项目中进行断点设置和变量监视&#xff0c;帮助…

2024CCPC全国邀请赛(郑州)暨河南省赛

2024CCPC全国邀请赛&#xff08;郑州站&#xff09;暨河南省赛 一铜一银&#xff0c;虽不是线下第一次参赛但是第一次拿xcpc奖牌&#xff0c;还有个国赛奖真是不戳。感谢学长&#xff0c;感谢队友&#xff01; 虽然遗憾没有冲到省赛金&#xff0c;不过还有icpc商丘&#xff08…

软件工程期末复习(7)需求过程

需求分析 需求过程 什么是需求过程&#xff1f; 需求过程是用来导出、确认和维护系统需求文档的一组结构化活动。通常&#xff0c;一个良好的需求过程应包括下列活动&#xff1a; 需求提取需求分析和协商需求确认 需求提取 需求提取是通过与客户、系统用户和其他与系统开发相…

面 试 题

过滤器和拦截器的区别 都是 Aop 思想的一种体现&#xff0c;用来解决项目中 某一类 问题的两种接口(工具)&#xff0c;都可以对请求做一些增强 出身 过滤器来自 servlet 拦截器来自 spring 使用范围 过滤器 Filter 实现了 iavax.servlet.Filter 接口&#xff0c;也就是说…

金航标kinghelm萨科微slkor公司发展和品牌传播

为了金航标kinghelm萨科微slkor公司发展和品牌传播&#xff0c;推出了”金航标每日芯闻“与“萨科微每日芯闻“栏目&#xff0c;影响力非常好。这一构想并非一时的灵光乍现&#xff0c;而是经过深思熟虑和充分调研的结果。制定该栏目的模板时候时&#xff0c;就明确了要求语音版…

C++进阶:红黑树介绍及模拟实现(图示详解过程)

C进阶&#xff1a;红黑树介绍及模拟实现 上次介绍了AVL树&#xff1a;C进阶&#xff1a;AVL树详解及模拟实现&#xff08;图示讲解旋转过程&#xff09; 今天就来紧接着来红黑树啦!!! 文章目录 1.红黑树介绍约束规则 2.项目文件规划3.整体框架&#xff08;节点和Tree&#xf…

html--地图

<!DOCTYPE html> <html lang"en"> <head><meta charset"utf-8"><title>ECharts</title><!--Step:1 引入一个模块加载器&#xff0c;如esl.js或者require.js--><script src"js/esl.js"></scr…

记一次洛谷刷题让人摸不到头脑的报错——Runtime Error.Received signal 6: Aborted / IOT trap.

报错题目 外星密码 - 洛谷 具体报错信息 Runtime Error.Received signal 6: Aborted / IOT trap. 错误代码 #include <iostream> #include <cstring> using namespace std;string sol() {string s "";string t "";char c ;int n 0;whi…

OpenAI 重磅发布GPT 4o!可以视频聊天的AI?

OpenAI 重磅发布GPT 4o&#xff01; 前言 就在今日&#xff0c;OpenAI发布了ChatGPT-4o版本&#xff0c;技术主管 Mira Murati 在直播中表示GPT-4o对比之前版本速度更快&#xff0c;在文本、视频和音频方面的能力也都有所提高。值得注意的是它还可以让用户与 ChatGPT 进行视频聊…

每日5题Day1 - LeetCode 1-5

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int[] twoSum(int[] nums, int target) {//返回值为Int[]数组&#xff0c;所以先初…