如何调试 containerLogMaxSize 在 kubelet 上不生效?

如何调试 containerLogMaxSize 在 kubelet 上不生效?

我正在运行以下 EKS 版本:

kubelet --version
Kubernetes v1.22.12-eks-ba74326

我已按照文档设置了以下参数这里

  "containerLogMaxSize": "100 Mi"

然后我重新启动了 kubelet:

systemctl daemon-reload
systemctl restart kubelet

但我的日志仍然以 10 MB 的速度旋转。

关于如何调试或修复这个问题有什么想法吗?

答案1

根据官方文档

ContainerLogMaxSize 是定义容器日志文件在轮换之前的最大大小的量。例如:“5Mi”或“256Ki”。如果 DynamicKubeletConfig 处于开启状态,则在动态更新此字段时,请考虑它可能会触发日志轮换。默认值:“10Mi”

如果容器日志最大大小不被接受,则默认情况下日志轮换将返回 10 MB 的日志文件。请将上面示例中提到的值更新为 100Mi(不带空格),因为您的要求是 100 MB。

containerLogMaxSize: 100Mi

答案2

我遇到了同样的问题,经过一番挖掘后,我使用以下命令修复了它。

Systemd 使用 dropin 文件 /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 进行 kubelet 启动,该文件指向配置文件 /var/lib/kubelet/config.yaml,这是我进行更改的地方。

$ sudo vi /var/lib/kubelet/config.yaml
  在文件底部添加以下内容:  
    containerLogMaxFiles:6  
    容器日志最大大小:“50Mi”  

然后重新启动kubelet:
$ sudo systemctl daemon-reload && sudo systemctl restart kubelet

最后,我使用下面的命令检查设置,我在
kubernetes 控制平面服务器。确保将 NODE_SERVER_NAME 更改为
您的节点服务器名称:
$ kubectl get --raw "/api/v1/nodes/NODE_SERVER_NAME/proxy/configz"

如果安装了 jq,则更容易阅读
$ kubectl get--raw“/api/v1/nodes/NODE_SERVER_NAME/proxy/configz”|jq。

相关内容