部署Elasticsearch Kubernetes:指南和代码示例

想要运行Elasticsearch Kubernetes吗?本指南将告诉你如何做。

Kubernetes是一个开源系统开发的自动化部署,缩放和集装箱的管理应用程序。它可以处理中断和需求高峰通过允许用户运行一个应用程序的多个副本,同时提供内置的缩放,健康检查,auto-healing机制。

短暂,Kubernetes作品通过描述文件,指定一个容器必须是如何工作的,每个容器的内存和CPU限制,多少副本应该保持在线,应该采取什么政策来增加或减少实例的数量。美丽也提供了一种机制(即部署控制器)来部署应用程序的新版本,同时保持可用性。

如果你需要一个快速入门Kubernetes与有状态应用程序和它是如何工作的,跳到Kubernetes底漆。

Elasticsearch Kubernetes:建议的体系结构

分布式设计,Elasticsearch通过复制提供了不同的方法来存储数据而提供可靠性和可伸缩性。

Elasticsearch有不同的运动部件必须部署可靠地工作。下面的图显示了我们提出的架构部署Elasticsearch Kubernetes。

在kubernetes Elasticsearch部署

拟议的架构特性三个主要组件可以组合。但是由于易于部署与Kubernetes组件,建议单独的每个不同的计算单元。

  • 客户机节点与水平自动定量部署为单独部署(如果可用)。这些节点作为整个集群和反向代理可能需要增加或减少的数量被请求节点动态。客户机节点查询主节点发现每个数据节点之间的数据分布。查询去整合多个数据节点和请求的客户端。
  • 主节点也发表了部署,但可以有一个固定数量的实例:理想情况下三个实现高可用性。Kubernetes将确保总有三个实例运行在不同的机器上。一个Kubernetes无头服务将自动部署。主节点保存了数据节点的元信息,如位置、分片和数据复制。
  • 数据节点事情变得有趣的地方。作为StatefulSets部署,每个实例都有一个持续的体积。如果实例停机,Kubernetes确保恢复实例将被附加到正确的说法。数据节点指数分割成碎片也复制节点之间的信息,以便在节点数据丢失或节点宕机的情况下这不会引发集群数据丢失。

此外,还有丰富的文档Elasticsearch拓扑和如何部署一个最佳Elasticsearch集群为您的需要。重要的是理解类型的节点必须有状态的部署。

部署Elasticsearch Kubernetes:一步一步

本节详细介绍如何轻松地部署Elasticsearch Kubernetes并检查你目前学到的一切。

先决条件

硬件需求

的例子应该在任何更新Kubernetes实例。三个节点的初始设置开始,至少4 GB的RAM。请跟你的云提供商的说明如何启用Kubectl集群(谷歌云,微软Azure, Amazon AWS,数字海洋,)。雷竞技地址ray

Kubernetes仪表板

为了更好地理解接下来的步骤,您可以使用k8仪表板,它显示命令行提供的信息,然后将它转变成一个易于理解的图形web界面。遵循以下步骤:

  1. 运行以下命令安装仪表板:

  2. 代理的连接

    kubectl应用- f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yam访问地址:
  3. 访问地址:
    名称空间https://localhost: 8001 / api / v1 / / kubernetes-dashboard /服务/ https: kubernetes-dashboard: / /代理在你的浏览器。使用令牌_Kubeconfig_云提供商提供的文件。

Kubernetes仪表板显示:

k8负载状态

执掌ElasticSearch:部署ElasticSearch Kubernetes舵

Kubernetes执掌Kubernetes是一个开源的包管理器。部署Elasticsearch最简单的方法之一是使用官方Elasticsearch执掌图表。

部署Elasticsearch Kubernetes舵,遵循这些步骤:

  1. 在你的本地机器上安装舵和Kubernetes集群(见文档)

2。安装后,添加弹性执掌存储库:

执掌回购添加弹性https://helm.elastic.co

3所示。通过使用命令安装弹性:

舵安装$ {es_cluster_name}弹性/ elasticsearch

例如:

舵安装esarticle弹性/ elasticsearch

4所示。按照部署步骤通过检查舱部署:

kubectl得到豆荚,名称空间=默认- l应用= elasticsearch-master - w

输出显示,应该是类似如下:

姓名就绪状态重启年龄elasticsearch-master-0 1/1 0 2 d elasticsearch-master-1 1/1运行运行运行2 d elasticsearch-master-2 1/1 0 2 d

默认情况下,ES执掌包创建三个主节点充当客户端,主人,和数据节点。每个副本将有其持久的体积要求:

kubectl得到光伏
名字能力访问模式回收政策状况声称STORAGECLASS原因年龄pvc - 2 b7f3e47 c2a0 - 4654制定30 g - 94 ad32b507c2 RWD删除绑定默认/ elasticsearch-master-elasticsearch-master-0 gp2 2 d pvc - 9078604 elfe 30 g - 4097 - 897 b - ba8bf84af863 RWD删除绑定默认/ elasticsearch-master-elasticsearch-master-2 gp2 2 d pvc-b857fdie-b387-4b54-b144-00ed66045047 30 g RWD删除绑定默认/ elasticsearch-master-elasticsearch-master-1 gp2 2 d

舵也创建了一个服务与一个负载平衡器,因此可以使用负载平衡器连接到ElasticSearch服务:

kubectl得到服务
名字类型集群ip外部ip端口(S)年龄elasticsearch-master ClusterIP 10.245.80.223 <无> 9200 / TCP 9300 / TCP 2 d elasticsearch-master-headless ClusterIP没有<无> 9200 / TCP 9300 / TCP 2 d

Elasticsearch舵图表提供了许多不同的配置来个性化你的部署,概述手册

部署Kibana与舵

Kibana是Elasticsearch设计的图形用户界面查询数据并创建仪表板(实时)。还有一个执掌图表,所以你可以很容易地安装它。

既然你已经添加了弹性执掌库到您的本地机器上,键入以下命令:

舵安装kibanaesarticle弹性/ kibana

注意:你可能需要一个新的节点Kubernetes集群。每个ES主实例已经收到了之前的大部分Kubernetes节点资源,和美丽不能部署Kibana。雷竞技rabet官网您可以检查如果是这样利用Kubernetes仪表板。

一切都部署后,您可以通过创建一个反向代理服务:

kubectl左前svc / kibanaesarticle-kibana 5601:5601

然后,访问web浏览器:https://localhost: 5601。Kibana将使用服务名称连接到Elasticsearch Helm先前创建的图表。如果ES是空的,Kibana将提供一些示例数据导入和呈现一个仪表板样本。

Kibana示例指示板

你可以改变的服务名称填写变量提供的图表。

快速Kubernetes底漆:Kubernetes上有状态应用程序运行

理解我们的Elasticsearch Kubernetes架构更好一点,这是一个快速入门Kubernetes是如何工作的,特别是有状态应用程序服务。几个Elasticsearch组件的状态。

有状态的服务数据可能不丢失。几个例子数据库、用户目录,消息和身份验证服务。这些服务不能简单地自旋向上的新实例和工作平衡的方式使用负载平衡器。首先,每个实例都需要持久存储,不会失去如果服务关闭。第二,每个服务都有一个政策如何在一个分布式的方式工作。

Kubernetes”模式处理持久数据分为三个结构。

持久的卷

持久的卷由集群管理员设置为便于用户节点可用于计算。这些卷是由插件像NFS, iSCSI,或云供应商的解决方案(如谷歌,AWS,或Azure)。雷电竞官网进入持久卷声称是一个用户要求持久性存储,就像要求CPU资源容器的形象。雷竞技rabet官网声称不需要理解底层存储结构,它们可以通用。

存储类

存储类用于动态持续的卷。如果没有持久卷参加索赔,美丽将尝试提供存储声称基于存储Classes-structures定义并被管理员指定约束和资源使用的每一个存储单元。雷竞技rabet官网

StatefulSet

StatefulSet API设计管理有状态应用程序。类似于无状态应用程序的部署,StatefulSet管理豆荚但持有身份的每个舱连接到正确的持久卷在停机的情况下。

有状态应用程序本身上可用的资源约束,超越Kubernetes当涉及到分布式计算:他们需要工程来处理多个实例和回退。雷竞技rabet官网

有状态应用程序的架构考虑Kubernetes

主/从体系结构是最常见,也最简单的架构部署在一个分布式环境中。架构规定只有一个实例接收读写请求,而工人只保留数据更新。在某些特定的情况下,工人的实例也允许读请求服务。如果有停机与主实例,一个工人将自动承担主人的角色。

除了主/从体系结构中,有许多人提供了多个可写节点。然而,发展高性能集群状态必须被小心地由一个专家由于增加了复杂性和性能降低的风险比单个实例配置。

即使一个实例服务,应该小心谨慎。虽然很容易升级/降级服务,与有状态应用程序必须要特别注意。通常,一旦这些应用程序升级,数据存储在一个持续的体积变化。这一变化呈现一个旧版本的原始数据不可用。这意味着如果你需要回滚一个版本升级,应用程序可能不会像预期的那样运行。这个问题的解决方案不依赖于美丽;它依赖于应用程序的目的是如何处理回滚。

我们Elasticsearch Kubernetes架构依赖另一个著名的模式称为分片。

底线——有状态应用程序可以用Kubernetes工作得很好

有状态应用程序如Elasticsearch Kubernetes上需要一个可靠的应用程序的持久性存储单元:数据损失不是一个选项。除此之外,这些应用程序分发和规模更困难。新实例必须被小心地与现有的同步。关闭的情况下也需要精心策划与其他相同服务的实例,以避免数据丢失。

问题升级或降级有状态应用程序时也会出现。版本升级往往导致数据结构变化,所以回滚计划前应测试和生产。

协调器可用Kubernetes是最受欢迎的容器。它提供了有效的解决方案,通过创建回退,不断提雷电竞官网进入高应用程序的可靠性监控运行应用程序,等等。经常有状态应用程序并没有考虑到协调器。一般来说,这些产品有整个团队致力于其内部部分的操作和维护。与持久的卷,然而,Kubernetes显示,可以实现定制有状态应用程序需要的级别,而失去一个编排系统提供了许多优势。

Baidu
map