ElasticSearch容器化从0到1实践(三)

本文详细介绍了如何在Kubernetes中部署Elasticsearch,包括官方示例、环境配置、痛点问题如环境复杂性和安全性的解决方案。通过ECK管理和优化,提出统一部署、数据管理、认证、版本管理和配置管理等关键问题的解决策略。
摘要由CSDN通过智能技术生成


上一节说到了ECK落地的26个关键问题,这一节将对这26个关键点的实施进行详细的说明,并给出符合业务的合理建议。

另外如果你认真看了上一节提到的26个关键问题,并且也对这些关键点表示认同的话,本节一定要细细品鉴,我自认为可以让你收获巨大。

部署Elasticsearch

Elasticserch 样例

在正式开始之前,首先通过官方的示例来创建Elasticsearch集群,简单了解下大概的流程。

cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 8.10.3
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false
EOF

观察es服务的启动情况

kubectl get pod | grep es
kubectl get es

至此,一个简单的Es集群就在K8S集群中跑起来了。

但是,这远远还不够,真真在生产环境中使用还会涉及到很多问题,这里先简单描述下现有环境以及需要兼容的问题。

Elasticserch历史环境及痛点

说明痛点
环境存在测试、开发、灰度、生产等多套环境环境复杂,维护成本较高
部署方式ansible方式部署、采用Ecs+数据云盘方式有部署门槛,资源碎片严重,维护成本较高
数据管理方式数据云盘扩容、更换都需要手动操作
流量接入直连IP + 默认端口方式不统一、对业务透明度差
Elasticsearch认证无认证不安全
集群版本6+、7+版本不统一、多个小版本存在
进程管理方式依赖告警发现进程问题, 无法自愈
配置管理配置混乱,无法复用

根据现有服务现状以及痛点问题, 通过容器化一次性解决,接下来对关键点问题逐步处理,给出合理方案。

关键问题点方案落地

推进ES服务容器化的过程中,并且对现有的痛点问题进行优化,确认了如下方案。

痛点解决方案
环境环境复杂,维护成本较高使用现有k8s集群,每个环境选取一个集群,独立资源池作为ES服务的统一部署。
部署方式有部署门槛,资源碎片严重,维护成本较高合理规划资源池,减少碎片化资源,采用ECK统一部署、管理ES服务。
数据管理方式扩容、更换都需要手动操作通过挂载独立磁盘进行数据落盘,存算分离,平滑扩容。
流量接入方式不统一、对业务透明度差统一流量入口,统一域名接入服务,快速无感扩容。
Elasticsearch认证不安全均为内网调用,安全问题可以接受
集群版本版本不统一、多个小版本存在统一集群版本,只保留6.x、7.x 各一个版本,减少维护成本。
进程管理方式依赖告警发现进程问题, 无法自愈采用K8S集群对服务生命周期进行管理
配置管理配置混乱,无法复用gitlab管理集群配置, 方便后期集群的自动化部署。

ES集群是否启动TLS/ES是否启动认证

通过ECK方式启动的集群默认会开启TLS,用户在访问时需要通过证书连接。基于现有网络环境及当前的使用方式,决定维持现有状态关闭TLS和认证,在配置文件中增加下面2处配置即可。

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
  namespace: elasticsearch
spec:
  version: 7.13.0
  http: # 指定协议类型
    tls:
      selfSignedCertificate:
        disabled: true
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false
      xpack.security.enabled: false # 关闭xpack认证

具体配置管理方式及逻辑可以参考源码进行分析,参考文档:https://blog.csdn.net/u012881331/article/details/133925528?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22133925528%22%2C%22source%22%3A%22u012881331%22%7D

ES节点角色拆分方式

序号项目
1ES集群是否启动TLS
2ES是否启动认证
3ES节点角色拆分方式
4ES健康检查设置检测协议
5kibana关闭https
6ECK方式加入现有ES集群
7ECK、ECS共存集群读写数据
8ECK安装ES插件
9集群数据无损迁移
10模拟pod异常恢复流程
11模拟宿主机异常
12验证数据盘随pod销毁时释放
13已有ECK增加ES角色
14ES镜像私有化
15容器亲和性策略
16ES节点扩缩容
17磁盘扩缩容
18流量接入
19多环境划分
20成本归属
21集群配置更新策略
22kibana集群访问方式
23节点规格规划
24节点绑定
25数据盘选型
26配置管理

参考文档

官方安装文档:https://www.elastic.co/guide/en/cloud-on-k8s/2.8/k8s-deploy-eck.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值