当前位置: 首页 > web >正文

k8s下离线搭建elasticsearch

前提

已经完成k8s安装

已经完成相关组件如helm的安装

下载es的chart包

如下地址

https://helm.elastic.co/helm/elasticsearch/elasticsearch-版本号.tgz

如6.8.10

https://helm.elastic.co/helm/elasticsearch/elasticsearch-6.8.10.tgz

修改配置

修改value.yaml文件,根据需求修改replicas数量,确定节点数,修改service.type为NodePort,修改service.nodePort,指定一个30000-32767的端口号,为外部访问使用,如果准备使用其他方式如只在集群内部或使用ingress代理,也可不指定

修改template/statefulset.yaml文件

在volumeClaimTemplates.spec下增加storageClass

spec:storageClass: "elasticsearch-storageclass"

创建存储部分

创建存储类文件sc.yaml:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: elasticsearch-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

执行命令 

kubectl apply -f sc.yaml

创建存储卷:

pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:name: pv1
spec:capacity:storage: 50GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: elasticsearch-storageclasslocal:path: /data/espv1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- ${k8s集群的主机,只能写一条}
  1. 其中values下的k8s主机只能有一条,虽然是个列表
  2. local.path指定路径必须提前创建好,否则会报错
  3. capacity下面的存储信息按照一个es节点的需求来

执行命令:

kubectl apply -f pv.yaml

注意:这是创建了es一个节点的存储卷,如果es是集群方式搭建,需要多个节点,请将上面的apply -f pv.yaml执行对应次数,并且每次修改里面meta.name、并每次根据需求修改里面的k8s主机和存储路径

下载镜像

找个能连互联网的主机

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/elasticsearch:6.8.0
docker save -o es.tar swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/elasticsearch:6.8.0

之后将es.tar上传到部署环境,使用docker load上传镜像,使用dokcer tag修改镜像名称,使用docker push传到本地镜像仓库

修改value.yaml文件,把里面的image参数改成实际的镜像地址

安装

把chart包使用helm package+cm push方式上传到仓库,方法可以参考:

helm与chartmuseum安装-CSDN博客

之后执行安装命令:

helm install elasticsearch -n ${命名空间} ${本地仓库名}/elasticsearch

使用命令查看安装效果:

kubect get pod -n${命名空间}

pod都起来就行了,接着使用:

kubect get svc -n${命名空间}

查看创建的es服务,主要是端口号

之后在其他pod里面就可以用下面地址访问:

elasticsearch-master.${空间名称}.svc.cluster.local:${端口号}

在外部使用集群任意节点ip+前面指定nodePort访问

增加使用用户名密码的http basic认证

如果需要增加认证,还要做一些改造

修改values.yaml文件,修改如下内容:

esConfig: elasticsearch.yml: |network.host: 0.0.0.0xpack.security.enabled: truexpack.security.transport.ssl.enabled: truehttp.cors.enabled: truehttp.cors.allow-origin: "*"http.cors.allow-headers: AuthorizationenvFrom: ELASTIC_USERNAME: elasticELASTIC_PASSWORD: ${密码,自己根据需求指定}

接着安装es,启动后使用kubectl get pod去查看pod状态,会发现es的状态始终为未启动完成,这是因为密码还未被设定,pod的健康检查始终通过不了

使用如下格式命令进入es的pod:

kubectl exec -it ${任意es的pod名称} -n${空间名} /bin/sh

在当前es目录中使用:

bin/elasticsearch-setup-passwords interactive

指定每个用户的密码,

之后exit退出pod,再使用kubectl get pod去查看,等所有pod都启动完成即成功

http://www.xdnf.cn/news/12437.html

相关文章:

  • 力扣100-移动0
  • Jmeter如何进行多服务器远程测试?
  • Podman 和 Docker
  • 关于如何使用VScode编译下载keil工程的步骤演示
  • BugKu Web渗透之网站被hei(仅仅是ctf题目名称)
  • Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤
  • CSS中justify-content: space-between首尾贴边中间等距(两端元素紧贴左右边缘,中间元素等距均匀分布)
  • NLP学习路线图(二十七):Transformer编码器/解码器
  • 传输层:udp与tcp协议
  • 分布式微服务系统架构第144集:FastAPI全栈开发教育系统
  • 基于 Vue 和 Spring Boot 实现滑块验证码的机器验证
  • Linux编程:1、文件编程
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月6日第100弹
  • pdf2zh 简明本地部署和api调用,以及离线部署总结
  • 行业案例 | ASOS 借助 Azure AI Foundry(国际版)为年轻时尚爱好者打造惊喜体验
  • 在Windows下利用LoongArch-toolchain交叉编译Qt
  • QuaggaJS用法详解
  • 分布式协同自动化办公系统-工作流引擎-流程设计
  • aardio 简单网页自动化
  • 命令行以TLS/SSL显式加密方式访问FTP服务器
  • 应用分享 | 精准生成和时序控制!AWG在确定性三量子比特纠缠光子源中的应用
  • http头部注入攻击
  • MySQL基础(二)SQL语言、客户端工具
  • 中国首套1公里高分辨率大气湿度指数数据集(2003~2020)
  • 服务器健康摩尔斯电码:深度解读S0-S5状态指示灯
  • ADI的BF609双核DSP怎么做开发,我来说一说(五)LAN口测试
  • 在.NET Core控制器中获取AJAX传递的Body参数
  • 【行驶证识别成表格】批量OCR行驶证识别与Excel自动化处理系统,行驶证扫描件和照片图片识别后保存为Excel表格,基于QT和华为ocr识别的实现教程
  • AI大模型学习三十三、HeyGem.ai 服务端(ubuntu)docker 安装 /客户端(win)分离部署
  • 【Linux】虚拟机代理,自动化脚本修改~/.bashrc