配置多节点集群- Elastic Stack 实战手册

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 如何使用Elastic Helm Chart来部署一个多节点的Elasticsearch集群。

970X90.png

· 更多精彩内容,请下载阅读全本《Elastic Stack实战手册》

· 加入创作人行列,一起交流碰撞,参与技术圈年度盛事吧

创作人:刘晓国

如何使用 Elastic Helm Chart 来部署一个多节点的 Elasticsearch 集群。

Elastic Helm Chart: https://github.com/elastic/helm-charts/

安装

安装 VM

在今天的安装中,我选择使用 virtualbox 来部署我们的 ECK。我们也可以选择 Docker 及其它的容器来进行。你可以使用如下的命令

brew install virtualbox

安装 Minikube 及 kubectl

针对不同版本的 MasOS,安装的方法可能不能。对于有些版本的 MacOS 来说,你需要打入如下的命令:

brew cask install minikube

或者:

brew install minikube

一般来说在安装 minikube 的过程中,它也会同时帮我们安装 kubectl。如果kubectl命令不能正常被执行,那么你可以尝试使用如下的命令来进行安装:

brew install kubernetes-cli

当我们把 minikube 及 kubectl 完全进行安装后,我们可以通过打入如下的命令来检查安装是否已经完成:

$ minikube version
minikube version: v1.9.0
commit: 48fefd43444d2f8852f527c78f0141b377b1e42a

如果你能看到上面的信息,则表明我们的 minikube 的安装时正确的。同样:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}

我们可以打入上面的命令来检查 kubectl 的版本信息。

目前 ECK 对于 kubernetes 的要求是:

  • kubectl 1.11+
  • Kubernetes 1.12+ or OpenShift 3.11+
  • Elastic Stack: 6.8+, 7.1+

一旦 minikube 安装好后,我可以通过如下的命令来检查哪些 plugin 已经被加载

minikube addons list

1.png

我们可以通过如下的命令来 enable 一个 plugin:

minikube addons enable dashboard

或者使用如下的命令来 disable 一个 plugin:

minikube addons disable dashboard

安装 Helm

我们可以使用如下的命令来安装 Helm:

brew install helm

针对其它的操作系统,请参照链接:https://helm.sh/docs/intro/install/

一旦完成我们们上面的安装后,我们也就可以开始来部署我们的 ECK 了。

使用 Elastic Helm Chart 安装 Elasticsearch 集群

首先我们启动 minikube。在启动 minikube 之前,我们需要对 minikube 的启动参数来进行配置。我是这样来启动我的 minikube 的:

minikube start --driver=virtualbox --cpus 4 --memory 10240 --kubernetes-version 1.16.0

在上面,我使用 virtualbox 来作为驱动。你也可以使用docker来启动。在这里我配置了cpu的个数是 4,内存是10G。同时由于一个一致的 bug,目前 minikube 不能和最新的 kubernetes 一起进行安装工作。在上面我特别指出了 kubernetes 的版本信息为1.16.0。

上面的命令的输出为:

2.png

对于中国的开发者来说,由于网路的限制,那么在使用上面的命令时,可能会出现 k8s.gcr.io 网址不能被访问的情况。那么我们怎么解决这个问题呢?答案是我们可以使用使用阿里云服务器。我们可以尝试使用如下的命令:

$ minikube start --help |grep repo

      --image-repository='': Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to "auto" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers

根据上面的提示,我们可以修改我们上面的命令为:

$ minikube start --driver=virtualbox --cpus 4 --memory 10240 --kubernetes-version 1.16.0 --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

那么根据上面的命令运行后的结果为:

3.png

一旦 minikube 被成功启动起来,我们可以使用如下的命令:

minikube dashboard

当上面的命令执行后,它就会启动一个 web 的接口让我们来对 kubernetes 监控和管理:

4.png

等我们上面的 Minikube 已经被启动后,我们使用如下的命令:

helm repo add elastic https://helm.elastic.co

上面的命令返回:

$ helm repo add elastic https://helm.elastic.co
"elastic" has been added to your repositories

接着我们使用如下的命令:

curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
$ curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   478  100   478    0     0    810      0 --:--:-- --:--:-- --:--:--   808

上面的 values.yaml 的内容如下:

---
# Permit co-located instances for solitary minikube virtual machines.
antiAffinity: "soft"
 
# Shrink default JVM heap.
esJavaOpts: "-Xmx128m -Xms128m"
 
# Allocate smaller chunks of memory per pod.
resources:
  requests:
    cpu: "100m"
    memory: "512M"
  limits:
    cpu: "1000m"
    memory: "512M"
 
# Request smaller persistent volumes.
volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  storageClassName: "standard"
  resources:
    requests:
      storage: 100M

我们使用 helm 来对我们的 Elasticsearch 进行安装:

 helm install elasticsearch elastic/elasticsearch -f ./values.yaml 

上面的命令的输出为:

$ helm install elasticsearch elastic/elasticsearch -f ./values.yaml 
NAME: elasticsearch
LAST DEPLOYED: Sun Apr  5 19:04:46 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Watch all cluster members come up.
  $ kubectl get pods --namespace=default -l app=elasticsearch-master -w
2. Test cluster health using Helm test.
  $ helm test elasticsearch --namespace=default

我们使用上面显示的命令来进行监控:

kubectl get pods --namespace=default -l app=elasticsearch-master -w
$ kubectl get pods --namespace=default -l app=elasticsearch-master -w
NAME                     READY   STATUS    RESTARTS   AGE
elasticsearch-master-0   0/1     Running   0          98s
elasticsearch-master-1   0/1     Running   0          98s
elasticsearch-master-2   0/1     Running   0          98s
elasticsearch-master-1   1/1     Running   0          106s
elasticsearch-master-2   1/1     Running   0          110s
elasticsearch-master-0   1/1     Running   0          116s

上面显示我们的 Elasticseach 已经被成功地部署好了。

接下来,我们来部署我们的 Kibana:

helm install kibana elastic/kibana

我们可以通过如下的命令来监控 Kibana 的创建过程:

kubectl get pods -w
$ kubectl get pods -w
NAME                             READY   STATUS              RESTARTS   AGE
elasticsearch-master-0           1/1     Running             0          4m12s
elasticsearch-master-1           1/1     Running             0          4m12s
elasticsearch-master-2           1/1     Running             0          4m12s
kibana-kibana-69f5ddd4bd-ql4s7   0/1     ContainerCreating   0          26s
kibana-kibana-69f5ddd4bd-ql4s7   0/1     Running             0          60s

如果我们看到 Kibana 的状态已经变为 Running,则表明我们的 Kibana 的创建是成功的。

最后,我们需要把 Kibana 的 5601 口进行 port forward:

kubectl port-forward deployment/kibana-kibana 5601

上面命令的运行结果为:

$ kubectl port-forward deployment/kibana-kibana 5601
Forwarding from 127.0.0.1:5601 -> 5601
Forwarding from [::1]:5601 -> 5601
Handling connection for 5601

这样我们的 Elasticsearch 已经被成功部署了。我们启动浏览器,并输入地址 localhost:5601

5.png

上面显示我们的 Elasticsearch 已经被成功部署了。

我们使用 Dev tools:

6.png

从上面我们可以看出来,我们已经成功地部署了 3 个 Elasticsearch 节点的集群。

如果你想了解 helm 更多,你可以使用如下的命令:

helm --help

helm 目前有很多的命令:

Available Commands:
  completion  Generate autocompletions script for the specified shell (bash or zsh)
  create      create a new chart with the given name
  dependency  manage a chart's dependencies
  env         Helm client environment information
  get         download extended information of a named release
  help        Help about any command
  history     fetch release history
  install     install a chart
  lint        examines a chart for possible issues
  list        list releases
  package     package a chart directory into a chart archive
  plugin      install, list, or uninstall Helm plugins
  pull        download a chart from a repository and (optionally) unpack it in local directory
  repo        add, list, remove, update, and index chart repositories
  rollback    roll back a release to a previous revision
  search      search for a keyword in charts
  show        show information of a chart
  status      displays the status of the named release
  template    locally render templates
  test        run tests for a release
  uninstall   uninstall a release
  upgrade     upgrade a release
  verify      verify that a chart at the given path has been signed and is valid
  version     print the client version information

我们可以通过命令:

helm list

来显示已经发布了的:

$ helm list
NAME             NAMESPACE    REVISION    UPDATED                                 STATUS      CHART                  APP VERSION
elasticsearch    default      1           2020-04-05 19:04:46.629021 +0800 CST    deployed    elasticsearch-7.6.2    7.6.2      
kibana           default      1           2020-04-05 19:08:32.566291 +0800 CST    deployed    kibana-7.6.2           7.6.2

我们也可以使用如下的命令来卸载已经发布了的:

helm uninstall

比如:

$ helm uninstall kibana
release "kibana" uninstalled
liuxg:kube liuxg$ helm uninstall elasticsearch
release "elasticsearch" uninstalled
liuxg:kube liuxg$ kubectl get pods 
No resources found.
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3天前
|
人工智能 自然语言处理 Shell
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
129314 24
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
|
5天前
|
人工智能 API 网络安全
用DeepSeek,就在阿里云!四种方式助您快速使用 DeepSeek-R1 满血版!更有内部实战指导!
DeepSeek自发布以来,凭借卓越的技术性能和开源策略迅速吸引了全球关注。DeepSeek-R1作为系列中的佼佼者,在多个基准测试中超越现有顶尖模型,展现了强大的推理能力。然而,由于其爆火及受到黑客攻击,官网使用受限,影响用户体验。为解决这一问题,阿里云提供了多种解决方案。
16212 37
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
4天前
|
并行计算 PyTorch 算法框架/工具
本地部署DeepSeek模型
要在本地部署DeepSeek模型,需准备Linux(推荐Ubuntu 20.04+)或兼容的Windows/macOS环境,配备NVIDIA GPU(建议RTX 3060+)。安装Python 3.8+、PyTorch/TensorFlow等依赖,并通过官方渠道下载模型文件。配置模型后,编写推理脚本进行测试,可选使用FastAPI服务化部署或Docker容器化。注意资源监控和许可协议。
1215 8
|
13天前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
3356 117
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
8天前
|
人工智能 自然语言处理 API
DeepSeek全尺寸模型上线阿里云百炼!
阿里云百炼平台近日上线了DeepSeek-V3、DeepSeek-R1及其蒸馏版本等六款全尺寸AI模型,参数量达671B,提供高达100万免费tokens。这些模型在数学、代码、自然语言推理等任务上表现出色,支持灵活调用和经济高效的解决方案,助力开发者和企业加速创新与数字化转型。示例代码展示了如何通过API使用DeepSeek-R1模型进行推理,用户可轻松获取思考过程和最终答案。
|
5天前
|
人工智能 自然语言处理 程序员
如何在通义灵码里用上DeepSeek-V3 和 DeepSeek-R1 满血版671B模型?
除了 AI 程序员的重磅上线外,近期通义灵码能力再升级全新上线模型选择功能,目前已经支持 Qwen2.5、DeepSeek-V3 和 R1系列模型,用户可以在 VSCode 和 JetBrains 里搜索并下载最新通义灵码插件,在输入框里选择模型,即可轻松切换模型。
871 14
|
12天前
|
API 开发工具 Python
阿里云PAI部署DeepSeek及调用
本文介绍如何在阿里云PAI EAS上部署DeepSeek模型,涵盖7B模型的部署、SDK和API调用。7B模型只需一张A10显卡,部署时间约10分钟。文章详细展示了模型信息查看、在线调试及通过OpenAI SDK和Python Requests进行调用的步骤,并附有测试结果和参考文档链接。
1888 9
阿里云PAI部署DeepSeek及调用
|
9天前
|
人工智能 数据可视化 Linux
【保姆级教程】3步搞定DeepSeek本地部署
DeepSeek在2025年春节期间突然爆火出圈。在目前DeepSeek的网站中,极不稳定,总是服务器繁忙,这时候本地部署就可以有效规避问题。本文以最浅显易懂的方式带读者一起完成DeepSeek-r1大模型的本地部署。
|
12天前
|
缓存 自然语言处理 安全
快速调用 Deepseek API!【超详细教程】
Deepseek 强大的功能,在本教程中,将指导您如何获取 DeepSeek API 密钥,并演示如何使用该密钥调用 DeepSeek API 以进行调试。

热门文章

最新文章