首页 > 解决方案 > 豆荚被杀死并重新创建说明 - OutOfphemeral-storage?

问题描述

我的 Pod 被杀死并重新创建,说明 OutOfephemeral-storage

Pod 描述显示以下消息

Message: Pod Node didn't have enough resource: ephemeral-storage, requested: 53687091200, used: 0, capacity: 0

节点容量

Capacity:
 cpu:                80
 ephemeral-storage:  1845262880Ki
 hugepages-1Gi:      0
 hugepages-2Mi:      0
 memory:             790964944Ki
 nvidia.com/gpu:     8
 pods:               110
Allocatable:
 cpu:                79900m
 ephemeral-storage:  1700594267393
 hugepages-1Gi:      0
 hugepages-2Mi:      0
 memory:             790612544Ki
 nvidia.com/gpu:     8
 pods:               110

节点磁盘使用率

]$ df -h 
Filesystem                                                      Size  Used Avail Use% Mounted on
/dev/sda1                                                       1.7T   25G  1.7T   2% /
devtmpfs                                                        378G     0  378G   0% /dev
tmpfs                                                           378G   16K  378G   1% /dev/shm
tmpfs                                                           378G  3.8M  378G   1% /run
tmpfs                                                           378G     0  378G   0% /sys/fs/cgroup

不过,一段时间后,吊舱会重新安排吗?任何想法为什么?

标签: kubernetes

解决方案


在大多数情况下,这是由于过多的日志消息正在消耗存储而发生的。解决方案是配置Docker 日志记录驱动程序 以限制已保存日志的数量:

{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "10"
}
}

另外值得一提的是,Docker 采用保守的方法来清理未使用的对象(通常称为“垃圾收集”),例如图像、容器、卷和网络:这些对象通常不会被删除,除非您明确要求 Docker 这样做. 这可能会导致 Docker 使用额外的磁盘空间。它帮助我使用名为 prune. 这将清除系统中未使用的对象。如果您想清理多个对象,您可以使用 docker system prune. 在此处查看有关 修剪的更多信息。

下一个可能的情况是,有些 pod 使用 emptyDir 而没有存储配额。这将填满存储空间。解决方案是设置配额来限制

    resources:
      requests:
        ephemeral-storage: "1Gi"
      limits:
        ephemeral-storage: "1Gi"

如果没有设置,任何容器都可以将任意数量的存储写入其节点文件系统。

有关临时存储如何工作的更多详细信息,请参阅临时存储消耗


推荐阅读