安装Kibana后EKS集群ElasticSearch就绪探针失败求助
问题分析与解决:EKS中安装Kibana后ElasticSearch就绪探针失败
在EKS集群中安装Kibana后,ElasticSearch Pod立即出现如下错误:
"Readiness probe failed: Waiting for elasticsearch cluster to become ready (request params: "wait_for_status=green&timeout=1s" ) Cluster is not yet ready (request params: "wait_for_status=green&timeout=1s" )"安装方式如下:
ElasticSearch安装:helm install elasticsearch elastic/elasticsearch -f elasticsearch/values.yaml
elasticsearch/values.yaml内容:# Shrink default JVM heap. esJavaOpts: "-Xmx128m -Xms128m" # Allocate smaller chunks of memory per pod. resources: requests: cpu: "100m" memory: "512M" limits: cpu: "1000m" memory: "512M" # Request smaller persistent volumes. volumeClaimTemplate: accessModes: [ "ReadWriteOnce" ] storageClassName: "gp2" resources: requests: storage: 100MKibana安装:
helm install kibana elastic/kibana主要使用Helm Chart默认配置,安装Kibana后ElasticSearch故障,同时Kibana Pod就绪状态显示0/1,返回Http响应000而非预期的200,推测由ElasticSearch故障导致。
核心原因分析
- ElasticSearch资源配置严重不足:配置的JVM堆内存仅128M,远低于官方最小推荐值(至少512M),且Pod总内存仅512M,减去堆内存后留给ES非堆内存(Lucene缓存、网络处理等)的空间不足,导致ES无法完成集群初始化,无法达到green状态。
- Kibana默认请求加重ES负载:Kibana部署后会立即连接ES并初始化专属索引,此时ES本身资源不足,无法处理额外请求,进一步拖慢集群启动流程。
- 就绪探针超时设置过短:默认1秒的超时时间,在ES资源不足的场景下,集群状态检查的响应时间会超过阈值,触发探针失败。
解决步骤
1. 调整ElasticSearch资源配置
修改elasticsearch/values.yaml,提升资源分配:
# 调整JVM堆内存至合理值,建议为Pod内存的一半(不超过32G) esJavaOpts: "-Xmx256m -Xms256m" # 提升Pod内存资源,给ES足够运行空间 resources: requests: cpu: "200m" memory: "1G" limits: cpu: "1000m" memory: "1G" # 增加存储容量,避免空间不足影响ES运行 volumeClaimTemplate: accessModes: [ "ReadWriteOnce" ] storageClassName: "gp2" resources: requests: storage: 1G
重新部署ES:
helm upgrade elasticsearch elastic/elasticsearch -f elasticsearch/values.yaml
2. 调整就绪探针参数
在elasticsearch/values.yaml中添加探针配置,延长超时和等待时间:
readinessProbe: failureThreshold: 10 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 3 timeoutSeconds: 5
给ES足够的初始化时间,避免探针误判。
3. 等待ES集群稳定后部署Kibana
先确认ES集群状态变为green:
kubectl exec -it elasticsearch-0 -- curl -s http://localhost:9200/_cluster/health | jq '.status'
返回"green"后再部署Kibana:
helm install kibana elastic/kibana
4. 验证Kibana状态
检查Pod就绪状态:
kubectl get pods -l app=kibana
就绪状态变为1/1后,通过端口转发验证服务:
kubectl port-forward svc/kibana 5601:5601
访问http://localhost:5601确认服务正常。
内容的提问来源于stack exchange,提问作者Rad4
相关产品推荐
相关产品推荐

