无法启动ElasticSearch Pod



几个月前,我在Kubernetes (GCP)上部署了Elastic-Search (version - 8.0.1)作为外部负载均衡器的服务。

现在,我无法对ElasticSearch执行任何读或写操作。我检查了日志,发现节点的内存几乎满了。

下面是一些支持这种分析的日志:

洪水水位[95%]超过[hulk-es-default-0][/usr/share/elasticsearch/data] free: 18.5mb[1.8%],该节点上的所有索引将被标记为只读

集群健康状态从[YELLOW]变为[RED] (reason: [shards failed [[1][0]]]).

此节点不健康:health check failed on [/usr/share/elasticsearch/data]. '

以下是执行任何读/写操作时出现的错误:

elasticsearch.exceptions。TransportError: TransportError(503, 'master_not_discovered_exception', None)

elasticsearch.exceptions。ConnectionTimeout: ReadTimeoutError(httpconnectionpool (host='…', port=****):读取超时。(读取超时= 30))

我增加了我的elasticsearch持久卷声明(PVC)的容量,但无法用新卷创建pod。

我遵循以下步骤-

  • 在StorageClass对象中设置allowVolumeExpansion字段为true

  • 伸缩ElasticSearch操作符部署到0个副本。

  • 使用

    删除未删除pod的statfulset Objectkubectl delete sts <statefulset-name> --cascade=orphan

在删除之前,我使用

保存了状态集的yaml。
kubectl get sts <statefulset-name> -o yaml
  • 增加了PVC的yaml文件的存储容量。
  • 用我使用
  • 保存的yaml文件用新的存储请求重新创建StatefulSet

kubectl apply -f file-name.yml

  • 将操作员部署缩减到1

但是,当我重新创建有状态集时,每次都显示CrashLoopBackOff错误。

以下是一些日志

  • 就绪探测失败
  • 可能的根本原因:java.io.IOException: No space left on device
  • 使用数据路径,mount [[/usr/share/elasticsearch/data (/dev/sdb)]], net usable_space [0b], net total_space [975.8mb], types [ext4]

ES pod正在访问的持久磁盘的卷增加了,但pod仍然无法启动。谁能指点我一下,这里有什么问题吗?

似乎是磁盘空间(/usr/share/elasticsearch/data)的问题。验证所需大小的持久卷是否可用,并通过PVC对象绑定到elasticsearch pod。

由于某些原因,Pod似乎没有看到新的卷大小。您是否尝试过GKE卷扩展?

如果Pod始终处于CrashLoopBackOff状态,您可以使用例如:kubectl debug mypod -it --image=busybox,因此您将附加一个调试容器到您的Pod并检查安装的卷发生了什么。

您还可以做的其他事情是创建卷的快照/备份,并将其恢复到新的更大的卷上,以查看问题是否仍然存在。

相关内容

  • 没有找到相关文章

最新更新