环境

  • Kubernetes: 1.24.17
  • Containerd: 1.6.24

需求

声明工作节点中容器生成日志大小,避免节点因空间问题导致不可调度。原使用Docker 容器运行时可以使用以下配置来实现,今学习使用Containerd的配置方法:

    "log-driver": "json-file", 
    "log-opts": {"max-size": "200m","max-file": "5"}

操作

方法1: 节点初始化使用KubeletConfiguration声明

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
failSwapOn: false
containerLogMaxSize: 200Mi
containerLogMaxFiles": 5

方法2: 更新 ${PATH}/kubelet/config.yaml

# vim /var/lib/kubelet/config.yaml

...<省略若干行>...
containerLogMaxSize: 200Mi
containerLogMaxFiles: 5
...<省略若干行>...

# systemctl restart kubelet

方法3: 更新kubelet 运行参数

# vim /etc/sysconfig/kubelet
 --container-log-max-files=5 --container-log-max-size="200Mi" 
 
# systemctl restart kubelet

验证

可使用以下命令来查看参数是否已经生效:

# kubectl get --raw "/api/v1/nodes/节点名称/proxy/configz" | jq .
...<省略若干行>...
    "containerLogMaxSize": "200Mi",
    "containerLogMaxFiles": 5,
...<省略若干行>...
...

总结

Kubelet 针对节点日志限制默认为:

  • containerLogMaxFiles: 5
  • containerLogMaxSize: "50Mi"