能否用ECK Operator以滚动升级策略升级Elasticsearch 7.8.1至7.17.9?求操作示例
用ECK Operator滚动升级Elasticsearch 7.8.1到7.17.9的操作流程
升级可行性确认
- Elasticsearch 7.x系列内的跨小版本滚动升级是官方支持的,7.8.1到7.17.9属于同大版本内升级,完全满足滚动升级前提
- ECK Operator原生支持这种滚动升级模式,会自动依据集群健康状态逐步替换节点,无需手动逐个操作
操作流程示例
1. 前置检查
- 确保Elasticsearch集群状态为green,执行命令:
kubectl get elasticsearch <你的集群名称> - 备份集群数据(可选但强烈建议),可通过Elasticsearch Snapshot API或Kubernetes卷快照实现
- 确认ECK Operator版本兼容性:ECK 1.8及以上版本支持管理Elasticsearch 7.17.x,若当前ECK版本过低,需先完成ECK Operator的升级(遵循官方步骤即可)
2. 修改Elasticsearch CR配置
直接编辑集群的自定义资源(CR):
kubectl edit elasticsearch <你的集群名称>
修改spec.version字段为目标版本7.17.9,也可显式配置滚动升级策略(ECK默认已启用滚动升级,以下为可选配置):
apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: <你的集群名称> spec: version: 7.17.9 # 替换为目标版本 nodeSets: - name: default count: 3 podTemplate: spec: containers: - name: elasticsearch resources: requests: memory: 2Gi cpu: 1 limits: memory: 2Gi cpu: 1 volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi # 可选:自定义滚动升级策略,保障高可用性 updateStrategy: changeBudget: maxSurge: 1 # 升级时最多新增1个节点 maxUnavailable: 0 # 升级期间不允许节点不可用
3. 应用配置并监控升级进度
保存修改后,ECK Operator会自动触发滚动升级,通过以下命令监控过程:
- 实时查看集群状态:
kubectl get elasticsearch <你的集群名称> -w - 跟踪节点Pod的状态变化:
kubectl get pods -l elasticsearch.k8s.elastic.co/cluster-name=<你的集群名称> -w - 查看单个节点的升级日志(可选):
kubectl logs -f <目标Pod名称> -c elasticsearch
4. 验证升级结果
升级完成后,确认所有节点版本为7.17.9:
kubectl exec <任意Elasticsearch Pod名称> -c elasticsearch -- curl -s http://localhost:9200/ | jq '.version.number'
同时再次确认集群状态为green:
kubectl get elasticsearch <你的集群名称>
关键注意事项
- 多nodeSet集群会按nodeSet逐个完成升级,无需额外操作
- 升级过程中若集群状态变为yellow,Operator会自动暂停升级,待状态恢复后继续推进
- 若升级失败,将
spec.version改回7.8.1即可触发回滚操作
内容的提问来源于stack exchange,提问作者Aakanksha
相关产品推荐
相关产品推荐

