kubernetes - 豆荚被杀死并重新创建说明 - 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
不过,一段时间后,吊舱会重新安排吗?任何想法为什么?
解决方案
在大多数情况下,这是由于过多的日志消息正在消耗存储而发生的。解决方案是配置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"
如果没有设置,任何容器都可以将任意数量的存储写入其节点文件系统。
有关临时存储如何工作的更多详细信息,请参阅临时存储消耗。
推荐阅读
- python - Python中txt文件中的单词和短语频率
- php - 单击浏览器后退按钮时如何在 PHP 中销毁会话?
- c - 按索引更新值 - 结构内的 void 指针数组
- sql - MS-Access VBA DoCmd.RunSQL 问题
- c# - 如何在不扩展 MVVM 的情况下向模型类添加新属性
- python - 在 python 中自动生成应用函数
- windows - Windows Docker 桌面 Linux 模式 - docker 容器时间偏差
- c# - 如何在 System.Text.Json.Serialization 上强制使用 Newtonsoft.Json
- python - 询问地点趋势时的 Twitter API 错误
- typescript - 我在哪里可以看到 deno 下载的包?