RKE2-k8s 集群中设置容器日志 limit 大小
本文永久链接: https://www.xtplayer.cn/rke2/how-to-set-container-log-rotation-with-rke2/
在基于 docker runtime 的 k8s 集群中,可以通过在 /etc/docker/daemon.json 配置文件中添加如下配置实现容器标准输出日志大小的限制。
"log-driver": "json-file", |
而在 rke2-k8s 环境中,已使用 containerd runtime 替换了 docker runtime,容器的日志已由 kubelet 负责管理。此功能自 k8s 1.10 开始支持,参考 PR https://github.com/kubernetes/kubernetes/pull/59898 。
在 rke2-k8s 环境中,默认已经启用了容器日志限制和轮换。在 https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/ 文档中,搜索 container-log-max-files 和 container-log-max-size 可以查看到默认值。
如果需要自定义单个日志文件 limit 大小以及日志文件数量,可以在 rke2 配置文件中通过添加 kubelet-arg 参数去覆盖默认的 kubelet 参数。
- 手动安装的 rke2 集群
在 RKE2 配置文件 /etc/rancher/rke2/config.yaml 中添加两个 kubelet 选项,然后执行 systemctl restart rke2-server 或者 rke2-agent。
kubelet-arg: |
rancher ui 安装的自定义 rke2 集群
编辑自定义 rke2 集群,在高级选项中添加 container-log-max-files=10 和 container-log-max-size=20Mi。
也可以通过标签选择的方式,为特定节点设置不同的参数值。比如如下配置,具有标签
node=a的节点将使用一种参数配置,而其他所有节点将使用另一种参数配置。
参考文档:
https://support.scc.suse.com/s/kb/How-to-set-container-log-rotation-with-RKE2?language=en_US
https://support.scc.suse.com/s/kb/360051441431?language=en_US
https://kubernetes.io/docs/concepts/cluster-administration/logging/

