存储在 /tmp 中的 Filebeat 日志导致 pod 驱逐

问题描述 投票:0回答:1

我在我的环境中看到一个问题,它使用 filebeat 进行日志记录和监控,其中使用了大量存储的文件正在创建。我假设这些是由 filebeat 创建的日志文件,这些文件存储在我的 pods /tmp 目录中。我正在使用 openshift 4.11.9 和 kubernetes 1.24.


total 680892
-rw-r--r--. 1 1000680000 1000680000 45518518 Mar  7 01:35 monitoring-stdout---supervisor-jti9vqc6.log
-rw-r-----. 1 1000680000 1000680000  5803121 Mar  7 01:35 pch4543779432628550477.history.gz
-rw-r-----. 1 1000680000 1000680000 54381482 Mar  7 01:35 pch4543779432628550477.history
-rw-r-----. 1 1000680000 1000680000  2185531 Mar  7 01:35 pch6805951925590054337.history
drwxrwsrwx. 4 root       1000680000     4096 Mar  7 01:28 .
-rw-r--r--. 1 1000680000 1000680000 52428996 Mar  7 01:28 monitoring-stdout---supervisor-jti9vqc6.log.1
-rw-r-----. 1 1000680000 1000680000    72101 Mar  7 01:26 pch6805951925590054337.history.gz
-rw-r--r--. 1 1000680000 1000680000 52428802 Mar  7 01:20 monitoring-stdout---supervisor-jti9vqc6.log.2
-rw-r--r--. 1 1000680000 1000680000 52428984 Mar  7 01:12 monitoring-stdout---supervisor-jti9vqc6.log.3
-rw-r--r--. 1 1000680000 1000680000 52428907 Mar  7 01:04 monitoring-stdout---supervisor-jti9vqc6.log.4
-rw-r--r--. 1 1000680000 1000680000 52429189 Mar  7 00:55 monitoring-stdout---supervisor-jti9vqc6.log.5
-rw-r--r--. 1 1000680000 1000680000 52428807 Mar  7 00:47 monitoring-stdout---supervisor-jti9vqc6.log.6
-rw-r--r--. 1 1000680000 1000680000 52428867 Mar  7 00:39 monitoring-stdout---supervisor-jti9vqc6.log.7
-rw-r--r--. 1 1000680000 1000680000 52429055 Mar  7 00:31 monitoring-stdout---supervisor-jti9vqc6.log.8
-rw-r--r--. 1 1000680000 1000680000 52428920 Mar  7 00:23 monitoring-stdout---supervisor-jti9vqc6.log.9
-rw-r--r--. 1 1000680000 1000680000 52428974 Mar  7 00:15 monitoring-stdout---supervisor-jti9vqc6.log.10
-rw-r-----. 1 1000680000 1000680000   173586 Mar  6 23:41 pch783860385935287176.history.gz
-rw-r-----. 1 1000680000 1000680000 11674655 Mar  6 23:41 pch7390231010312236403.history.gz
drwxr-s---. 2 1000680000 1000680000     4096 Mar  6 19:41 axis2-tmp-597419792942874660.tmp
-rw-r-----. 1 1000680000 1000680000        0 Mar  6 19:41 axis2-tmp-597419792942874660.tmp.lck
drwxrwxrwt. 4 1000680000 root             64 Mar  6 19:40 .com_ibm_tools_attach
-rw-------. 1 1000680000 1000680000        0 Mar  6 19:39 filebeat-syslog-stderr---supervisor-j80_3v5j.log
-rw-------. 1 1000680000 1000680000        0 Mar  6 19:39 filebeat-syslog-stdout---supervisor-hq39mt_v.log
-rw-------. 1 1000680000 1000680000        0 Mar  6 19:39 filebeat-was-stderr---supervisor-en73_cgc.log
-rw-------. 1 1000680000 1000680000        0 Mar  6 19:39 filebeat-was-stdout---supervisor-v0comu9p.log
-rw-------. 1 1000680000 1000680000        0 Mar  6 19:39 filebeat-cpe-stderr---supervisor-v8837rxx.log
-rw-------. 1 1000680000 1000680000        0 Mar  6 19:39 filebeat-cpe-stdout---supervisor-_0l469zf.log
-rw-r--r--. 1 1000680000 1000680000        3 Mar  6 19:39 supervisord.pid
srwx------. 1 1000680000 1000680000        0 Mar  6 19:39 supervisor.sock
dr-xr-xr-x. 1 root       root             28 Mar  6 19:39 ..

如您所见,这些是正在创建的文件以及我关心的从 monitoring-*.log 开始的文件。 我想知道是否有任何解决方案可以提供以下任何一点

减小文件大小 将目录从 /tmp 更改为其他目录 减少这些文件将内容相互环绕所花费的时间。 对此有任何想法将不胜感激

我试图找出为什么文件被发送到 /tmp 并且无法找到修改输出目录的方法或弄清楚如何减少生成的文件数量

kubernetes openshift elastic-stack filebeat
1个回答
0
投票

在 OpenShift/Kubernetes 中,每个运行的容器都有大小限制。因此,如果容器内的应用程序正在生成非常大的日志文件,当超过该大小限制时,容器将被终止。

空目录

一个可能的解决方案是使用

EmptyDir
卷并将其安装在您认为是
/tmp
.

的日志文件位置
$ oc set volume dc/<name> --add --name=logs --type=emptydir --mount-path=/tmp

请记住,

emptyDir
如果集群管理员启用了 FSGroup 参数,卷存储可能会受到基于 pod 的 FSGroup 的配额限制。

参考

增加覆盖尺寸

另一种解决方案是使用

ContainerRuntimeConfig
CRD 增加最大 Overlay 大小。但是,此配置将适用于在与标签选择器匹配的节点上运行的所有容器,而不仅仅是您的应用程序。

overlaysize.yml:

apiVersion: machineconfiguration.openshift.io/v1
kind: ContainerRuntimeConfig
metadata:
 name: overlay-size
spec:
 machineConfigPoolSelector:
   matchLabels:
     custom-crio: overlay-size
 containerRuntimeConfig:
   pidsLimit: 2048
   logLevel: debug
   overlaySize: 8G

应用配置更改

$ oc apply -f overlaysize.yml
$ oc edit machineconfigpool worker

更新工人配置

apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfigPool
metadata:
  creationTimestamp: "2020-07-09T15:46:34Z"
  generation: 3
  labels:
    custom-crio: overlay-size
    machineconfiguration.openshift.io/mco-built-in: ""

参考 1, 参考 2

© www.soinside.com 2019 - 2024. All rights reserved.