kubernetes临时存储限制参数-ephemeral storage
前言
最近发现一个服务pod内疯狂打日志,输出一小时内输出155G+日志量,直接造成了线上服务因磁盘压力被驱逐。
然后看了下很多技术跑的tomcat之类的业务也是输出大量日志未进行处理的或者一些奇怪Bug。
临时存储的概念
临时存储即宿主机节点的本地存储。早期版本的kubernetes提供了对container的CPU、内存的限制,并没有提供对container使用的本地存储的限制,这种情况下,可能存在某些container大量消耗宿主机的存储容量,导致宿主机没有足够的磁盘空间运行核心组件。
container使用的宿主机空间:
- 存放log的目录:
/var/lib/kubelet、/var/log/pods
- 存放rootfs的目录:
/var/lib/docker
kubernetes在1.8版本引入了ephemeral storage
资源,以管理本地临时存储的使用。
临时性存储设置请求和限制
你可以指定 ephemeral-storage
来管理本地临时性存储。 Pod 中的每个容器可以设置以下属性:
spec.containers[].resources.limits.ephemeral-storage
spec.containers[].resources.requests.ephemeral-storage
参考:
https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/#local-ephemeral-storage
测试Demo
创建一个deploy,ephemeral-storage申请300Mi,限制300Mi:
创建出来2个pod:
在其中一个pod写入400Mi的文件:
可以看到,写入文件的pod被Evicted,并新创了一个pod:
注意pod只是被
Evicted
了,但未比删除。
参考
1.https://zhuanlan.zhihu.com/p/601805418
2.https://blog.csdn.net/sdmei/article/details/101017405
为什么我这个主题评论有问题
你问问作者~