1. ECK与Kubernetes集成概述
Elastic Cloud on Kubernetes(ECK)是Elastic官方提供的Kubernetes Operator,它极大简化了Elasticsearch、Kibana、APM等组件在K8S集群中的部署和管理流程。与传统的Helm安装方式相比,ECK采用Operator模式,通过自定义资源定义(CRD)实现对Elastic Stack生命周期的自动化管理。
在实际生产环境中,我们通常会选择YAML文件进行ECK的安装配置,主要原因包括:
- 声明式配置:YAML文件可以完整描述整个ECK部署的期望状态
- 版本控制友好:YAML文件可纳入Git等版本控制系统进行管理
- 可重复部署:相同的YAML配置可以在不同环境(开发/测试/生产)中保证一致性
- 参数显式声明:所有配置参数明确记录,避免隐式默认值带来的不确定性
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的环境准备
2.1 系统要求检查
在部署ECK之前,需要确保Kubernetes集群满足以下基本要求:
- Kubernetes版本1.21及以上(推荐1.23+)
- 每个节点至少4GB可用内存(生产环境建议8GB+)
- 集群中配置了默认的StorageClass
- 已安装kubectl并配置好集群访问权限
可以通过以下命令快速验证集群状态:
bash复制kubectl get nodes -o wide
kubectl get sc
kubectl version --short
2.2 必要的权限配置
ECK Operator需要一定的集群权限来管理Elastic资源。我们需要提前创建对应的ServiceAccount和ClusterRoleBinding:
yaml复制# eck-permissions.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: elastic-operator
namespace: elastic-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: elastic-operator
rules:
- apiGroups:
- ""
resources:
- secrets
- services
- configmaps
- pods
- endpoints
verbs:
- '*'
# 省略部分RBAC规则...
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: elastic-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: elastic-operator
subjects:
- kind: ServiceAccount
name: elastic-operator
namespace: elastic-system
应用配置:
bash复制kubectl apply -f eck-permissions.yaml
