在 Kubernetes 上运行 Elasticsearch

Kubernetes(快速)入门
Kubernetes 是一种容器编排技术,这只是一种奇特的说法,它可以帮助您管理和运行打包的应用程序。它基本上看起来像这样:

库伯内特斯架构
Kubernetes 基本架构
您的应用程序(例如博客软件)是在Container中构建和打包的。
容器化应用程序部署到 Kubernetes,并在Pod中运行。
部署是 Kubernetes 的一个概念,用于管理 Pod 及其属性,例如要运行的 Pod 的副本数量。
服务用于向世界公开容器端口(如果是 LoadBalancer 类型),或者至少向其邻居部署公开。换句话说,服务为在后台运行的容器创建一个 IP 地址。
Kubernetes 服务使得其他部署中的 Pod 可以访问我们的 Pod,例如,我们的博客软件可以通过各自的服务与数据库和电子邮件服务器进行通信,当然假设它们在 Kubernetes 上运行。
Kubernetes节点正在运行 Pod。默认情况下,节点上 pod 的顺序是任意的。
您可以使用亲和性和反亲和性规则来告诉 Kuberentes 如何将正在运行的 Pod 分布在节点上(例如,所有绿色 Pod 不应在同一节点上运行,以防失败)。
Kubernetes 部署不会为其 pod 维护任何状态,因为假设在下面运行的应用程序是完全无状态的。如果您确实希望应用程序在重新启动之间维护状态及其存储卷,就像我们在本例中运行数据库或 Elasticsearch 时所做的那样,您应该使用 StatefulSet,它是可以维护状态的部署:

PersistentVolume (PV) 是 Kubernetes对底层硬件提供的某个卷上的存储空间的抽象。这可以是 AWS EBS 驱动器、Google 云磁盘等。
PersistentVolumeClaim (PVC) 是 Deployment 或 StatefulSet 请求某些存储空间的一种方式。已分配的存储将在 Pod 和 Node 重新启动后继续存在。
StatefulSet只是另一种类型的 Deployment,但它能够维护 Pod 身份和 Pod 卷。
Headless Service用于 StatefulSet Pod 的发现。
现在我们已经基本解释了 Kubernetes,让我们解决最重要的问题。

Kubernetes 是 Elasticsearch 的好选择吗?
Kubernetes 最初是为运行临时工作负载而设计和构建的,这意味着无状态应用程序和各种作业。一般来说,数据库从来就不是要在 Kubernetes 和容器上运行的。请参阅此处和此处,了解有关该主题的一些值得注意的讨论。

使有状态部署发挥作用的 StatefulSet 是后来添加的,尽管它们确实有效并且工作得很好。

对我来说,我通常仍然会避免在 Kubernetes 上运行任何数据库或数据存储:

额外的抽象层会带来性能损失。
在普通虚拟机上运行数据库和数据存储可让您选择合适的大小,而不会浪费任何资源。对于 Kuberenetes,运行节点的虚拟机中总会有某些部分未被使用。
在虚拟机上运行时,调整机器和磁盘的大小要容易得多。
由于增加了抽象层,运行大型集群将更加难以管理(例如,在保持反亲和性的同时更难以停用/重新启动多个节点)。
如前所述,Kubernetes 最初并不是为有状态应用程序设计的。
基于 VM 的 Elasticsearch 集群的编排、自动化、滚动更新等可以使用 Terraform、Pulumi、Ansible 和一些其他类似工具轻松解决。
在某些情况下,在 Kubernetes 上运行 Elasticsearch 确实非常有用,我们甚至可能建议:

您正在使用 Kubernetes 来做所有事情,并且不熟悉任何其他部署方法。在这种情况下,重用现有基础设施是一个重要因素。
此外,您只需要一个非常小的集群,这可能无法证明管理其他工具或部署方法是合理的。不过,对于大型集群来说,学习和使用其他工具或方法将值得避免在 Kubernetes 上管理它的麻烦。
如果您的系统需要作为 SaaS 部署在某些公共云上,但同时需要使用相同的部署和配置为您的客户部署在本地。
对于您确实想在 Kubernetes 上运行 Elasticsearch 的情况,让我们看看如何完成。

Elasticsearch集群拓扑
使用 Elastic Stack 时,需要特别注意的部分是 Elasticsearch 本身 - 位于堆栈中间的层,用于存储数据并执行所有魔力。典型的 Elasticsearch 集群如下所示:

典型的Elasticsearch集群

典型的Elasticsearch集群
至少有2个Data节点 来保存所有数据;他们接收查询和索引请求,并完成所有繁重的工作。
正好有 3 个符合 Master 资格的节点,它们将管理集群元数据。与许多人想象的不同,主节点从不处理数据操作,只处理集群元数据操作。他们甚至从未接近过数据。
可选地,有2个或更多客户端节点,也称为协调节点。这些节点向集群数据的使用者公开并充当 HTTP 代理。如果未部署它们,数据节点也将充当协调节点,这是我们通常希望在适当大小的集群上避免的事情。
集群访问点是任何协调节点,或者可以放在它们前面的负载平衡器。

在 Kubernetes 上运行的 Elasticsearch 集群拓扑将非常相似:

在 Kubernetes 上运行的 Elasticsearch 集群拓扑

在 Kubernetes 上运行的 Elasticsearch 集群拓扑
节点布局相同;单独的客户端节点仍然是可选的。
数据节点部署为具有 PV 和 PVC 的 StatefulSet。因此,它们通过重新启动和崩溃也保留其身份和存储,这是期望的行为。
主节点可以部署为 Deployment 或 StatefulSet。部署为 StatefulSet 只会使集群恢复更快。
为每个 StatefulSet 创建一个无头服务并用于集群间发现。
客户端节点完全无状态,可以作为简单的 Kubernetes 部署进行部署。
创建 LoadBalancer Kubernetes 服务以将 HTTP 请求转发到协调节点。
您的应用程序以及 Kibana、Logstash、Beats 等工具都应配置为与 LoadBalancer 服务通信。这也是您应该通过 Kubernetes Ingress 等设置 HTTPS 安全性的地方。

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

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

相关文章

vue、react中虚拟的dom

React中虚拟DOM的例子: 下面是一个使用React创建的简单的计数器组件: import React, { Component } from react;class Counter extends Component {constructor(props) {super(props);this.state {count: 0};}handleClick () > {this.setState({c…

httpClient超时时间详解与测试案例

使用httpclient作为http请求的客户端时,我们一般都会设置超时时间,这样就可以避免因为接口长时间无响应或者建立连接耗时比较久导致自己的系统崩溃。通常它里面设置的几个超时时间如下: RequestConfig config RequestConfig.custom().setCo…

电磁场与电磁波part1--矢量分析

目录 1、方向导数 2、散度定理(高斯定理) 3、散度与旋度的比较 4、旋度定理(斯托克斯定理) 5、关于点乘、叉乘、梯度、散度、旋度的计算 ~~~~~~~~~~~~~~~~~~~~~~~~ 确认过眼神,是我看不懂的 ~~~~~~~~~~~~~~~~…

IDEA没有Add Framework Support解决办法

点击File—>Settings 点击第一个设置快捷键 点击apply和ok即可 我们要点击一下项目,再按快捷键ctrlk 即可

C++入门(2)—函数重载、引用

目录 一、函数重载 1、参数类型不同 2、参数个数不同 3、参数顺序不同 4、 链接中如何区分函数重载 二、引用 1、规则 2、特征 3、使用场景 做参数 做返回值 4、常引用 5、传值、传引用效率比较 6、引用和指针的区别 接上一小节C入门(1)—命名空间、缺省参数 一…

Python 如何实现适配器设计模式?什么是适配器(Adapter)设计模式?

什么是适配器设计模式? 适配器(Adapter)设计模式是一种结构型设计模式,它允许接口不兼容的类之间进行合作。适配器模式充当两个不兼容接口之间的桥梁,使得它们可以一起工作,而无需修改它们的源代码。 主要…

JXLS 导出多sheet,带页眉页脚

/*** 生成多sheet Excel* 带自定义页眉页脚** param templatePath* param sheetList* return* throws IOException*/public static byte[] generateMultiSheet(String templatePath, List<JxlsHelper2.SheetContext> sheetList) throws IOException {ByteArrayOutputStre…

C++ 基础

准备工具Vscode或者Clion或者Dev C或者Vs studio 和 MSYS2 是C跨平台的重要工具链. 基础一 准备工作安装MSYS2软件 创建文件 一、基本介绍1.1C源文件1.2 代码注释1.3变量与常量1.3.1变量1.3.2 常量1.3.3 二者的区别&#xff1a; 1.4 关键字和标识符 二、数据类型2.1 基本数据类…

Flink CDC

1、Flink CDC的介绍&#xff1a; 是一种技术&#xff0c;可以帮助我们实时的捕获数据库中数据的变化&#xff0c;并将这些变化的数据以流的形式传输到其他的系统中进行处理和存储。 2、Flink CDC的搭建&#xff1a; 1、开启mysql的binlog功能&#xff1a; # 1、修改mysql配置…

C/C++ 实现获取硬盘序列号

获取硬盘的序列号、型号和固件版本号&#xff0c;此类功能通常用于做硬盘绑定或硬件验证操作&#xff0c;通过使用Windows API的DeviceIoControl函数与物理硬盘驱动程序进行通信&#xff0c;发送ATA命令来获取硬盘的信息。 以下是该程序的主要功能和流程&#xff1a; 定义常量…

2023版Idea创建JavaWeb时,右键new没有Servlet快捷键选项

问题&#xff1a;右键时&#xff0c;没有创建servlet的快捷键&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 1.打开idea&#xff0c;点击File>settings(设置)&#xff0c;进入settings页面&#xff0c;如下 从上图中的Files选项中没看到有servlet选项&#xff0c;…

2023NOIP A层联测32

2023NOIP A层联测32 文章目录 2023NOIP A层联测32A flandreB.meirinC.sakuyaD. 红楼 ~ Eastern Dream总结 A flandre 有 n n n 种烟花&#xff0c;每种烟花有两个参数 a &#xff0c; b a &#xff0c; b a&#xff0c;b&#xff0c;你要构造一种燃放顺序&#xff0c;使得 …

正则表达式入门教程

一、本文目标 让你明白正则表达式是什么&#xff0c;并对它有一些基本的了解&#xff0c;让你可以在自己的程序或网页里使用它。 二、如何使用本教程 文本格式约定&#xff1a;专业术语 元字符/语法格式 正则表达式 正则表达式中的一部分(用于分析) 对其进行匹配的源字符串 …

Rancher 容器中使用 jmap 工具导出内存日志

提升容器权限 编辑容器工作负载&#xff0c;在【安全/主机设置】中选中【特权模式】的【是&#xff1a;容器具有所有主机访问权限】 进入容器命令行&#xff0c;执行 jmap 命令 # 获取服务 pid ps -ef | grep java # 执行 jmap 导出内存日志 jmap -dump:live,formatb,file/hom…

线程锁的应用与示例代码

为了解决这个问题&#xff0c;可以使用线程锁来确保在提取zip文件中的每个文件时&#xff0c;同一时间只有一个线程可以访问文件。这样可以避免多个线程同时访问和写入文件&#xff0c;从而解决race condition的问题。以下是修改后的示例代码&#xff1a; python import reque…

提升pip速度!设置pip全局镜像源,速度飞起!

文章目录 💢 问题 💢💯 解决方案 💯🐾 镜像源🐾 镜像全局配置🍄 Windows系统🍄 Linux和macOS系统🍄 添加环境变量的方式💢 问题 💢 由于“某些网络限制”原因,我们在使用pip安装python模块的时候速度会比较慢,这个时候我们就需要用到一些镜像源,本文将…

R语言提取文字(字符串)中的内容--正则式(2)

科学研究中有时候咱们收集到的数据很乱&#xff0c;不能马上进行分析&#xff0c;如SEER数据&#xff0c;用过都知道&#xff0c;咱们需要对数据进行清洗&#xff0c;从数据中提取咱们需要的东西&#xff0c;才能进行分析&#xff0c;这时候有个有用的东西叫正则式&#xff0c;…

Service Worker是什么?

Service Worker 是一种在 Web 浏览器中运行的脚本&#xff0c;它独立于网页的上下文&#xff0c;并且可以在用户关闭网页后仍然在后台运行。Service Worker 可以用于实现许多功能&#xff0c;包括离线缓存、消息推送和网络代理等。 Service Worker 是一种浏览器技术&#xff0…

2023年05月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有列表L=[‘UK’,‘china’,‘lili’,“张三”],print(L[-2])的结果是?( ) A: UK B: ‘lili’,‘张三’ C: lili D: ‘UK’,‘china’,‘lili’ 答案:C 列表元素定位 第2题 …

最新宝塔反代openai官方API开发接口详细搭建教程,解决502 Bad Gateway问题

一、前言 宝塔反代openai官方API接口详细教程&#xff0c;实现国内使用ChatGPT502 Bad Gateway问题解决&#xff0c; 此方法最简单快捷&#xff0c;没有复杂步骤&#xff0c;不容易出错&#xff0c;即最简单&#xff0c;零代码、零部署的方法。 二、实现前提 一台海外服务器…