Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,有restful接口,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。这里将Elasticsearch集群部署在k8s中,记录部署过程。

一、准备工作

1.1、实验环境

kubernetes集群由两个节点组成,实验环境在虚拟集中搭建,master配置:2vCPU、2G RAM; worker配置:2vCPU、4G RAM,各节点信息如下:

# 查看k8s集群节点信息
root@k8s-master:~# kubectl get nodes -owide
NAME         STATUS   ROLES           AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
k8s-master   Ready    control-plane   5d    v1.24.3   192.168.5.248   <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   containerd://1.7.27
k8s-node     Ready    <none>          5d    v1.24.3   192.168.5.249   <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   containerd://1.7.27
root@k8s-master:~#
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

在kubernetes中部署elasticsearch集群_provisioner

1.2、提前部署nfs

因为要通过nfs在存储Elasticsearch的数据,实验中已提前安装部署nfs-server,安装部署在master节点上,IP地址为:192.168.5.248,共享目录为/k8s。

在kubernetes中部署elasticsearch集群_provisioner_02

二、部署Elasticsearch

本次实验中,Elasticsearch的数据存储是通过storageclass在nfs中根据所需配置自动生成存储卷并挂在到pod中,所以需要安装nfs-provisioner。

2.1、安装nfs provisioner

1、创建nfs-provisioner需要的sa账号

root@k8s-master:~/kubernetes/Elasticsearch# cat sa.yaml  
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner
root@k8s-master:~/kubernetes/Elasticsearch# kubectl apply -f sa.yaml  
serviceaccount/nfs-provisioner created
root@k8s-master:~/kubernetes/Elasticsearch# kubectl get sa
NAME              SECRETS   AGE
default           1         7d2h
nfs-provisioner   0         5s
root@k8s-master:~/kubernetes/Elasticsearch#
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

2、对sa授权

root@k8s-master:~/kubernetes/Elasticsearch# kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:nfs-provisioner
clusterrolebinding.rbac.authorization.k8s.io/nfs-provisioner-clusterrolebinding created
root@k8s-master:~/kubernetes/Elasticsearch# 
root@k8s-master:~/kubernetes/Elasticsearch# kubectl ge