使用helm charts安装elasticsearch集群

helm是kubernetes的包管理器,可以管理k8s的各种资源,并利用charts描述文件做非常复杂的编排功能,可以说是各种有状态发行软件的安装利器。现在各大厂商都出了自身产品的helm安装包,本文尝试使用helm进行es集群的搭建

前提条件:一个可用的kuberenetes集群(1.10以上版本)

安装helm

方式一:使用官方脚本一键安装

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh
$ chmod 700 get_helm.sh
$ ./get_helm.sh

方式二:手动下载安装(这里安装目前最新的2.13.1版本)

#从官网下载最新版本的二进制安装包到本地:https://github.com/kubernetes/helm/releases
# 解压压缩包
tar -zxvf helm-2.13.1.tar.gz 
# 把 helm 指令放到bin目录下
mv helm-2.13.1/helm /usr/local/bin/helm
helm help # 验证

安装Tiller

注意:先在 K8S 集群上每个节点安装 socat 软件(yum install -y socat ),不然会报错,如果当初使用的kubeadm安装的k8s,socat是自动安装好的

Tiller 是以 Deployment 方式部署在 Kubernetes 集群中的,只需使用以下指令便可简单的完成安装。

$ helm init

由于 Helm 默认会去 storage.googleapis.com 拉取镜像,很可能访问不了。可以直接去阿里云下载镜像,并打tag,镜像地址为registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1

Tiller授权

k8s1.6版本以后默认使用RBAC授权模式,需要添加账号及角色才能使tiller正常访问api-server
创建 Kubernetes 的服务帐号(tiller)和绑定角色(这里赋予cluster-admin角色)

$ kubectl create serviceaccount --namespace kube-system tiller
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

为 Tiller 这个deploy设置刚才创建的帐号

# 使用 kubectl patch 更新 API 对象
$ kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
deployment.extensions "tiller-deploy" patched

验证tiller是否安装成功

[root@MiWiFi-R1CM-srv _state]# kubectl get po -n kube-system|grep tiller
tiller-deploy-7cb87ddf7d-274ph            1/1     Running   1          2d1h
[root@MiWiFi-R1CM-srv _state]# helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

更换仓库

默认的charts仓库在googleapi网站上,速度比较慢,这里我们更换为阿里云的charts仓库

# 先移除原先的仓库
helm repo remove stable
# 添加新的仓库地址
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 更新仓库
helm repo update

执行helm search看一下目前可用的charts,现在还不多,但很多大名鼎鼎的中间件,比如rabbit mqmysqlredismangodb等等都针对helm charts出了高可用版本,要知道这些中间件的集群搭建可是非常麻烦的,使用helm可以非常方便的一键搭建集群,并且还可以一键删除(为啥不早五年出来。。。),以后有机会尝试一下,这次我们要试验的是elasticsearch集群的搭建。

搭建ES集群

es集群的具体介绍我这里就不展开了,简单说是一个基于lucene的高效的分布式全文搜索引擎,在搜索领域有着十分广泛的应用。之前弄好了helm环境,这边的操作就十分简单了,登陆es的官方helm charts仓库https://github.com/elastic/helm-charts
按照里面的说明,添加repo源

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

安装

helm install --name elasticsearch elastic/elasticsearch --version 7.0.0-alpha1

执行helm inspect可查看各种helm的安装参数,每个参数都有详细说明,根据需要选择即可

由于es的helm安装的是statefulset(有状态副本),里面用到了pvc,所以还需要添加pv信息,否则pod是起不来的,因为我这边只有一个虚拟机,所以使用的是hostpath方式的pv,实际生产还是要用Local Persistent Volume或者挂载ceph、nfs这样的外置存储,pv文件如下

apiVersion: "v1"
kind: "PersistentVolume"
metadata:
  name: "elasticsearch-master-elasticsearch-master-0"
spec:
  capacity:
    storage: "30Gi"
  accessModes:
    - "ReadWriteOnce"
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /root/esdata

这样就声明了一个name为elasticsearch-master-elasticsearch-master-0的pv,容量为30G,挂载在本地的/root/esdata目录下
执行

kubectl create -f local-pv.yaml

创建pv,完成后执行

[root@MiWiFi-R1CM-srv ~]# kubectl get pv
NAME                                          CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                                                 STORAGECLASS   REASON   AGE
elasticsearch-master-elasticsearch-master-0   30Gi       RWO            Recycle          Bound       default/elasticsearch-master-elasticsearch-master-0                           4d1h

可以看到状态为BOUND,绑定成功,这里是因为name相同,自动绑定到helm创建的同名pvc上去了。
这时候再执行

[root@MiWiFi-R1CM-srv ~]# kubectl get po
NAME                             READY   STATUS    RESTARTS   AGE
elasticsearch-master-0           1/1     Running   0          89m

可以看到状态都ok了,单节点的es集群搭建完成

这里面有一个问题,发现单节点的情况下,一旦往集群内写入数据后,再删除该pod,sts会重新分配一个pod起来,名字还是叫elasticsearch-master-0,挂载目录也不变,但是就无法加入集群,不知道是否和es集群脑裂有关系,有懂的高人请指点一下

kibana安装

kibana是es官配的ui图形界面,功能十分强大,这边安装也十分简单,直接执行

helm install --name kibana elastic/kibana --version 7.0.0-alpha1

即可,集群默认会找http://elasticsearch-master:9200的es集群,之前装es的时候已经设置过(通过k8s的service以及dns服务发现),修改一下kibana的service默认配置,改成nodeport模式,就可以通过浏览器直接访问了

kibana.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。...
    小波同学阅读 1,382评论 0 4
  • 参考文档:Helm 官网Helm Docs What is Helm? Helm helps you manage...
    Mokaffee阅读 915评论 0 1
  • Helm 是 Kubernetes 的软件包管理工具。本文需要读者对 Docker、Kubernetes 等相关知...
    guoweikuang阅读 86,331评论 3 86
  • 轩宝宝好不容易才哄睡,趁着还不算晚,写点什么吧。 每年年终,都会写点东西,总结过往,展望未来。 ...
    桉梓龙儿阅读 282评论 1 2
  • 今天早晨代老师让我6点40到校,指导我从那大群里边儿写日记,代老师还让我看了她录的一段机器人跳舞的视频,我从来没看...
    朱秉政阅读 145评论 0 0