1

我正在运行一个有 8 个工作节点和 3 个主节点的 k8 集群。我的 pod 因临时存储问题而反复驱逐。以下是我在 Evicted pod 上遇到的错误:

Message:        The node was low on resource: ephemeral-storage. Container xpaas-logger was using 30108Ki, which exceeds its request of 0. Container wso2am-gateway-am was using 406468Ki, which exceeds its request of 0.

为了克服上述错误,我在我的命名空间中添加了临时存储限制和请求。

apiVersion: v1
kind: LimitRange
metadata:
  name: ephemeral-storage-limit-range
spec:
  limits:
  - default:
      ephemeral-storage: 2Gi
    defaultRequest:
      ephemeral-storage: 130Mi
    type: Container

即使在我的命名空间中添加了上述限制和请求之后,我的 pod 也达到了它的限制,然后被驱逐了。

Message:        Pod ephemeral local storage usage exceeds the total limit of containers 2Gi.

如何监控我的临时存储,它存储在我的实例上的什么位置?如何根据大小将 docker logrotate 设置为我的临时存储?有什么建议么?

4

1 回答 1

2

这里的“临时存储”是指不在卷中的容器文件系统中使用的空间。您的进程中的某些内容正在使用大量本地磁盘空间。在摘要中,这相对容易调试:使用kubectl exec在 pod 中获取 shell,然后使用普通的 Unix 命令du来查找空间的去向。由于它是 pod 内部的空间,因此无法从节点直接访问,并且您可能无法使用诸如logrotate尝试管理它之类的工具。

我过去遇到的一个具体原因是配置为记录到文件的进程。在 Kubernetes 中,您通常应该将日志记录设置设置为记录到标准输出。这避免了这个特定的临时存储问题,但也避免了一些实际从 pod 中获取日志文件的实际问题。 kubectl logs将向您显示这些日志,您可以设置集群级工具以将它们导出到另一个系统。

于 2021-07-29T10:40:34.000 回答