我们的一个容器使用的是短暂的存储,但我们不知道为什么。在容器中运行的应用程序不应该将任何东西写入磁盘。
我们将存储限制设置为20 We,但仍在被逐出。我们可以提高限制,但这似乎是一个绷带修复。
我们不知道这个容器是写到什么地方的,我也不知道如何检查它。当一个容器被逐出时,我能看到的唯一信息就是容器超过了它的存储限制。
是否有一种有效的方法来了解正在编写的内容,或者是我们梳理代码的唯一选择?
发布于 2022-03-29 08:50:33
向主题添加详细信息。
豆荚使用短暂的本地存储空间、缓存和日志。豆荚可以被驱逐,因为其他豆荚填充了当地的储藏室,之后新的豆荚被禁止进入,直到足够的储存已经被回收。
kubelet可以使用本地临时存储将emptyDir卷安装到容器中,为Pods提供划痕空间。
要查看自荚启动以来编写了哪些文件,您可以运行:
find / -mount -newer /proc -print
这将输出比'/proc‘更近期修改的文件列表。
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/run/secrets
/run/secrets/kubernetes.io
/run/secrets/kubernetes.io/serviceaccount
/run/nginx.pid
/var/cache/nginx
/var/cache/nginx/fastcgi_temp
/var/cache/nginx/client_temp
/var/cache/nginx/uwsgi_temp
/var/cache/nginx/proxy_temp
/var/cache/nginx/scgi_temp
/dev
此外,尝试没有‘-挂载’选项。
要查看是否修改了任何新文件,可以在Pod中运行以下命令的一些变体:
while true; do rm -f a; touch a; sleep 30; echo "monitoring..."; find / -mount -newer a -print; done
并使用du -h someDir
命令检查文件大小。
此外,正如@gohm'c在他的回答中指出的那样,您可以使用sidecar/短暂的调试容器。
阅读更多关于局部短期存储的信息。
发布于 2022-03-24 06:33:30
We're not sure what or where this container is writing to, and I'm not sure how to check that.
尝试查看与emptyDir
一起安装的容器emptyDir
部分,然后添加一个侧面容器(例如。启动shell会话,您可以在其中检查路径。如果集群支持临时调试容器,则不需要sidecar容器。
https://stackoverflow.com/questions/71592515
复制相似问题