Kubernetes Helm 安装 Elasticsearch cluster

10 篇文章 0 订阅
4 篇文章 0 订阅

前言

一个帮助您管理 Kubernetes 应用程序——Helm Charts 帮助您定义、安装和升级最复杂的 Kubernetes 应用程序

Helm 可以使用 Charts 启动 Kubernetes 集群,提供可用的工作流:

  • 一个 Redis 集群

  • 一个ES集群,这篇文章要讲到的。

特性:

  • 查找并使用流行的软件,将其打包为 Helm Charts,以便在 Kubernetes 中运行
  • 以 Helm Charts 的形式共享您自己的应用程序
  • 为您的 Kubernetes 应用程序创建可复制的构建
  • 智能地管理您的 Kubernetes 清单文件
  • 管理 Helm 包的发行版

Chart 是 Kubernetes 的单元,Helm 的架构参考 Homebrew

安装:

  • Homebrew 用户使用 brew install kubernetes-helm. (Mac用户)
  • Chocolatey 用户使用 choco install kubernetes-helm. (Windows用户)

 1.我是mac用户,helm客户端程序安装都大同小异,大家可自行百度。

Mac用户使用终端安装kubectl helm客户端。

chengli.zou@clz-mbp ~ % brew install kubectl helm

复制k8s master节点上的.kube/config 文件。

chengli.zou@clz-mbp ~ % cd .kube 
chengli.zou@clz-mbp .kube % pwd
/Users/chengli.zou/.kube
chengli.zou@clz-mbp .kube % scp -r root@master.k8s.xxx.com:~/.kube/config .

测试kubectl客户端能正常操作集群。

chengli.zou@clz-mbp .kube % kubectl get nodes
NAME                 STATUS   ROLES    AGE   VERSION
master.k8s.xxx.com   Ready    master   66m   v1.18.5
node00.k8s.xxx.com   Ready    <none>   65m   v1.18.5
node01.k8s.xxx.com   Ready    <none>   65m   v1.18.5
node02.k8s.xxx.com   Ready    <none>   65m   v1.18.5

2.进入正题。使用helm安装es集群。我这里安装7.6.2版本。

添加helm仓库:

chengli.zou@clz-mbp .kube % helm repo add elastic https://helm.elastic.co
"elastic" has been added to your repositories

仓库添加好后,别急着安装,我们需要手动创建持久化卷,以及es要用到的持久化卷要求。

在即将要创建持久卷的节点创建好相关主机路径。也就是下面文件提到的hostPath对于的路径:/mnt/data

[root@master ~]# ssh node00 'mkdir /mnt/data && chmod -R 777 /mnt/data'
[root@master ~]# ssh node01 'mkdir /mnt/data && chmod -R 777 /mnt/data'
[root@master ~]# ssh node02 'mkdir /mnt/data && chmod -R 777 /mnt/data'
[root@master ~]# vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: node00-pv
  labels:
    type: local
spec:
  storageClassName: node00-pv-class
  capacity:
    storage: 32Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: "/mnt/data"

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: node01-pv
  labels:
    type: local
spec:
  storageClassName: node01-pv-class
  capacity:
    storage: 32Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: "/mnt/data"

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: node02-pv
  labels:
    type: local
spec:
  storageClassName: node02-pv-class
  capacity:
    storage: 32Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: "/mnt/data"

[root@master ~]# kubectl create -f pv.yaml
[root@master ~]# vi es-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: elasticsearch-master-elasticsearch-master-0
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: node00-pv-class
  resources:
    requests:
      storage: 30Gi
  volumeMode: Filesystem

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: elasticsearch-master-elasticsearch-master-1
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: node01-pv-class
  resources:
    requests:
      storage: 30Gi
  volumeMode: Filesystem

---

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: elasticsearch-master-elasticsearch-master-2
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: node02-pv-class
  resources:
    requests:
      storage: 30Gi
  volumeMode: Filesystem

[root@master ~]# kubectl apply -f es-pvc.yaml

3.回到mac或者widnows客户端,就可以接着使用helm命令进行整体安装了。

chengli.zou@clz-mbp .kube % helm install es elastic/elasticsearch --set image=registry.cn-shanghai.aliyuncs.com/dockerio_containers/elasticsearch --version 7.6.2
NAME: es
LAST DEPLOYED: Mon Jul 13 18:11:01 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 es --namespace=default

4.等待几分钟,每个节点需要拉镜像需要点时间。

chengli.zou@clz-mbp es % kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
elasticsearch-master-0   1/1     Running   0          6m
elasticsearch-master-1   1/1     Running   0          6m
elasticsearch-master-2   1/1     Running   0          6m

5.es装成功了。那么如何访问9200默认开放端口呢?因为我们是k8s集群安装的,所以我们不像裸搭的那样直接,直接通过某个节点宿主机端口进行访问。k8s集群里访问某个服务标准化路线是 ingress --> service --> pod --> container。

查看相关service:

chengli.zou@clz-mbp es % kubectl get svc
NAME                            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)             AGE
elasticsearch-master            ClusterIP   10.1.161.25   <none>        9200/TCP,9300/TCP   26m
elasticsearch-master-headless   ClusterIP   None          <none>        9200/TCP,9300/TCP   26m

发现有两个相关服务,我们随便选择一个就好了。 我们就选择第一个吧。

根据上面的路线来看,我们service都有了,那么现在只缺一个ingress入口。我们来编辑一个es-ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.allow-http: "true"
  name: es-ingress
spec:
  tls:
  - hosts:
    - es.k8s.xxx.com
    secretName: admin-user-token-pjwck
  rules:
  - host: es.k8s.xxx.com
    http:
      paths:
      - path: /
        backend:
          serviceName: elasticsearch-master-headless
          servicePort: 9200
chengli.zou@clz-mbp es % kubectl apply -f ingress.yaml

去浏览器访问一波:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值