Elasticsearch 云原生化:使用 ECK(Elastic Cloud on Kubernetes)部署 ES 集群
·
Elasticsearch 云原生化:使用 ECK 部署集群
1. ECK 简介
ECK(Elastic Cloud on Kubernetes)是 Elastic 官方提供的 Kubernetes Operator,用于自动化部署和管理 Elasticsearch、Kibana 等组件。核心优势:
- 声明式配置:通过 YAML 定义集群状态
- 自动化运维:自愈、扩缩容、证书管理
- 云原生集成:无缝对接 Kubernetes 生态
2. 部署前提
- Kubernetes 集群:版本 ≥ 1.18(推荐 1.22+)
- 存储类:支持动态卷供应(如 AWS EBS, GCP PD)
- 资源配额:建议节点 ≥ 4vCPU/8GB RAM
- 工具准备:
kubectl version --short # 验证 CLI helm version # Helm 3(可选)
3. 安装 ECK Operator
步骤 1:添加 Helm 仓库
helm repo add elastic https://helm.elastic.co
helm repo update
步骤 2:部署 Operator
helm install eck-operator elastic/eck-operator -n elastic-system --create-namespace
验证安装:
kubectl get pods -n elastic-system # 预期状态:Running
4. 部署 Elasticsearch 集群
配置文件 es-cluster.yaml:
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: production-cluster
spec:
version: 8.7.0
nodeSets:
- name: default
count: 3
config:
node.roles: ["master", "data"] # 混合节点
podTemplate:
spec:
containers:
- name: elasticsearch
resources:
requests:
memory: 4Gi
cpu: 2
limits:
memory: 8Gi
cpu: 4
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
storageClassName: standard # 替换为实际存储类
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 50Gi
应用配置:
kubectl apply -f es-cluster.yaml
监控状态:
kubectl get elasticsearch # 等待状态变为 Ready
kubectl get pods -l elasticsearch.k8s.elastic.co/cluster-name=production-cluster
5. 访问集群
获取凭据:
kubectl get secret production-cluster-es-elastic-user -o go-template='{{.data.elastic | base64decode}}'
端口转发(临时测试):
kubectl port-forward service/production-cluster-es-http 9200
访问 https://localhost:9200(使用生成的用户名/密码)
6. 关键运维操作
- 扩缩容:修改 YAML 中
nodeSets.count并重新 apply - 升级版本:修改
spec.version后 apply,ECK 自动滚动更新 - 备份配置:
spec: snapshotRepositories: - name: backup-repo type: gcs # 支持 S3/Azure/GCS settings: bucket: "my-es-backups"
7. 最佳实践
- 分离角色:生产环境拆分 master/data/ingest 节点组
- 资源隔离:通过
nodeSelector绑定到专用节点 - 网络优化:启用
spec.http.service.spec.type: LoadBalancer - 监控集成:部署 Elastic Agent 收集指标
故障排查命令:
kubectl logs -f <pod-name> -c elasticsearch # 查看日志 kubectl describe elasticsearch production-cluster # 检查事件
通过 ECK 实现 Elasticsearch 的云原生化,可显著降低运维复杂度,同时保障集群的高可用性与弹性。
更多推荐
所有评论(0)