我在Pod中运行的服务输出了太多日志,并导致临时存储不足。结果,吊舱被逐出,其他服务无法部署到k8s。
那么,如何确定Pod资源临时存储请求和限制以避免这种情况?我找不到有关临时存储的最佳实践。
答案 0 :(得分:2)
请注意,默认情况下,如果您未对ephemeral-storage
设置任何限制,则pod可以访问其正在运行的节点的整个磁盘,因此如果您确定该pod因以下原因而被逐出这样,那么您可以确定豆荚将所有食物消耗掉了。您可以从kubelet日志中进行检查,因为kubelet是负责检测此行为并逐出容器的人。
现在,您有两个选择。您既可以设置ephemeral-storage
限制,进行受控的容器驱逐,也可以仅获取外部卷,将其映射到容器中,然后将日志获取到节点外部。
您还可以按照shubham_asati的建议监视磁盘使用情况,但是如果它吞噬了所有磁盘,那么它就吞噬了所有磁盘。您只是要看看它是如何填写的。
答案 1 :(得分:1)
您需要部署prometheus和grafana,以了解Pod消耗了多少内存和cpu。然后相应地在该广告连播上设置这些请求和限制
临时存储的请求和限制设置是一项新功能,尚处于测试阶段。您可能需要再等几个月才能使用该功能。
但是,如果您使用的是k8s 1.18,则可以测试临时存储的请求和限制设置
答案 2 :(得分:1)
我想可以将Pod的临时存储定义为cpu请求/限制。 请参见此https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#local-ephemeral-storage,但此功能处于beta阶段K8的1.16版中。
要检查名称空间级别的资源消耗视图https://kubernetes.io/docs/concepts/policy/resource-quotas/#storage-resource-quota。
您可以为每个吊舱设置请求/临时存储空间。
关于您的问题
然后比较两个输出的存储。