☰
K8S中使用YAML部署ECK的完整指南
2026/10/27 12:22:59 网站建设 项目流程

1. 为什么要在K8S中使用YAML安装ECK

在Kubernetes环境中部署Elastic Cloud on Kubernetes(ECK)时,YAML文件是最常用的配置方式。这主要基于以下几个技术考量:

  1. 声明式配置优势:YAML文件采用声明式语法,可以清晰描述ECK集群的期望状态,K8S控制器会自动将当前状态调整为声明状态。相比命令式操作,这种方式更易于版本控制和变更管理。

  2. 基础设施即代码:YAML文件可以被纳入Git版本控制系统,实现ECK部署的代码化管理。这对于生产环境的配置审计和回滚特别重要。

  3. 可重复部署:相同的YAML配置可以在不同环境(开发、测试、生产)中重复使用,确保环境一致性。

2. ECK安装前的环境准备

2.1 基础环境要求

在开始安装ECK之前,需要确保Kubernetes集群满足以下要求:

  • Kubernetes版本不低于1.18
  • 集群具有足够的资源(建议至少4核CPU和8GB内存)
  • 配置了正确的StorageClass
  • 已安装kubectl命令行工具并配置好集群访问权限

2.2 必要的组件检查

使用以下命令检查集群状态:

kubectl get nodes kubectl get storageclass kubectl get pods -A

3. 编写ECK安装的YAML配置文件

3.1 基本YAML结构

一个典型的ECK安装YAML文件包含以下主要部分:

apiVersion: operator.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: quickstart spec: version: 8.8.1 nodeSets: - name: default count: 1 config: node.store.allow_mmap: false

3.2 关键配置参数解析

  1. 版本控制:

    version: 8.8.1

    必须明确指定Elasticsearch版本,ECK不支持自动版本升级。

  2. 节点配置:

    nodeSets: - name: default count: 3 config: node.roles: ["master", "data"]

    可以定义多个节点组,每个组可以配置不同的角色和资源。

  3. 存储配置:

    volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 30Gi

4. 部署和验证ECK集群

4.1 应用YAML配置

使用kubectl应用YAML文件:

kubectl apply -f eck-install.yaml

4.2 部署状态监控

查看ECK操作器日志:

kubectl logs -f -n elastic-system statefulset.apps/elastic-operator

检查Elasticsearch集群状态:

kubectl get elasticsearch

4.3 访问集群

获取访问凭证:

kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode

创建端口转发:

kubectl port-forward service/quickstart-es-http 9200

5. 生产环境配置建议

5.1 高可用配置

对于生产环境,建议至少配置3个master节点和2个data节点:

nodeSets: - name: master count: 3 config: node.roles: ["master"] - name: data count: 2 config: node.roles: ["data"]

5.2 资源限制

为Pod设置合理的资源限制:

resources: limits: cpu: "2" memory: 4Gi requests: cpu: "1" memory: 2Gi

5.3 持久化存储

使用持久卷确保数据安全:

volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: ["ReadWriteOnce"] storageClassName: "standard" resources: requests: storage: 100Gi

6. 常见问题排查

6.1 Pod启动失败

可能原因:

  • 资源不足
  • 镜像拉取失败
  • 存储配置错误

排查步骤:

kubectl describe pod <pod-name> kubectl logs <pod-name>

6.2 集群健康状态异常

检查集群健康状态:

kubectl get elasticsearch quickstart -o=jsonpath='{.status.health}'

常见修复方法:

  • 增加节点资源
  • 检查网络连接
  • 验证存储配置

6.3 性能优化建议

  1. JVM堆内存设置:

    config: xpack.ml.enabled: false xpack.security.enabled: true
  2. 禁用不必要的功能模块

7. 升级和运维

7.1 版本升级

ECK支持滚动升级,修改YAML中的version字段即可:

version: 8.9.0

然后重新应用配置:

kubectl apply -f eck-install.yaml

7.2 备份恢复

配置快照仓库:

spec: snapshotRepositories: - name: my-backup type: gcs settings: bucket: "my-es-backups"

7.3 监控告警

集成Prometheus监控:

monitoring: metrics: enabled: true logs: enabled: true

8. 安全配置

8.1 网络策略

限制Pod间通信:

spec: podTemplate: spec: networkPolicy: ingress: - from: - podSelector: matchLabels: role: elasticsearch

8.2 TLS加密

启用传输层加密:

spec: http: tls: selfSignedCertificate: disabled: false

8.3 访问控制

配置RBAC规则:

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: elasticsearch-reader rules: - apiGroups: [""] resources: ["pods", "pods/log"] verbs: ["get", "list", "watch"]

9. 性能调优实战

9.1 JVM参数优化

config: es.logger.level: INFO thread_pool.search.size: 20 thread_pool.search.queue_size: 1000

9.2 索引管理策略

通过ILM管理索引生命周期:

spec: indexLifecyclePolicies: - name: hot-warm-cold phases: hot: actions: rollover: max_size: "50gb" warm: min_age: "7d" actions: shrink: number_of_shards: 1

9.3 查询性能优化

配置查询缓存:

config: indices.queries.cache.size: "10%" indices.fielddata.cache.size: "30%"

10. 扩展与集成

10.1 与Kibana集成

部署Kibana实例:

apiVersion: kibana.k8s.elastic.co/v1 kind: Kibana metadata: name: quickstart spec: version: 8.8.1 count: 1 elasticsearchRef: name: quickstart

10.2 与APM集成

配置APM服务器:

apiVersion: apm.k8s.elastic.co/v1 kind: ApmServer metadata: name: quickstart spec: version: 8.8.1 count: 1 elasticsearchRef: name: quickstart

10.3 自定义插件安装

通过init容器安装插件:

podTemplate: spec: initContainers: - name: install-plugins image: docker.elastic.co/elasticsearch/elasticsearch:8.8.1 command: ["sh", "-c", "bin/elasticsearch-plugin install analysis-icu"]

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询