作者:刘晓国
如何使用 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
我们可以通过如下的命令来 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。
上面的命令的输出为:
对于中国的开发者来说,由于网路的限制,那么在使用上面的命令时,可能会出现 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'
那么根据上面的命令运行后的结果为:
一旦 minikube 被成功启动起来,我们可以使用如下的命令:
minikube dashboard
当上面的命令执行后,它就会启动一个 web 的接口让我们来对 kubernetes 监控和管理:
等我们上面的 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
上面显示我们的 Elasticsearch 已经被成功部署了。
我们使用 Dev tools:
从上面我们可以看出来,我们已经成功地部署了 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.
公司介绍 深圳赛盒科技有限公司(IrobotBox)是一家以高科技创意为核心的技术服...
云服务器 的内存多少? 云服务器 的内存不是固定不变的,用户可以根据自己网站规...
注册域名 会产生费用吗?注册 域名 一般来说是会产生费用的。虽然也有一些免费域...
数据接入与传输作为打通数据系统与业务系统的一道桥梁,是数据系统与架构中不可...
国内 高防服务器 推荐哪个?不同 云服务商 提供的高防服务器性能和价格也是千差...
这两年我看到很多关于这方面的文章和帖子,这的确是一个非常方便的东西。但是,...
云服务器 如何安装ftp? 云服务器 要安装ftp,可以参考以下方法进行。 1.下载Xli...
作者 | 许晓斌 来源 | 阿里巴巴云原生公众号 写作动机 我们为何写作?对于许多技...
本文通过系统性地介绍阿里巴巴 AI 中台的技术质量体系搜索推荐广告应用的质量是...
发布会传送门 : https://yqh.aliyun.com/live/aiotfa 近日,阿里云AIoT春季产品...