记录消耗Google Cloud Kubernetes窗格中磁盘空间的日志

时间:2018-06-06 10:54:06

标签: logging kubernetes google-cloud-platform log-rotation kubernetes-pod

我们在Google Cloud Platform Kubernetes群集中有一个pod,将JsonFormatted写入StdOut。这是由Stackdriver开箱即用的。但是,我们看到pod的磁盘使用量正在增长和增长,我们无法理解如何在部署上设置最大大小以进行日志轮换。

关于Google Cloud和Kubernetes的文档目前尚不清楚。

这只是最后一小时:

Memory consumption on a Pod

1 个答案:

答案 0 :(得分:0)

您是否确定由于日志而导致磁盘的磁盘使用率很高? 如果应用程序将日志写入stdout,则它不会使用pod中的任何磁盘空间。 所有日志通常都存储在节点文件系统的日志文件中,并且可以由节点logrotate进程管理。

也许应用程序使用pod的磁盘空间来处理其他内容,比如临时文件或调试信息?

以下是documentation与日志轮换相关的部分:

  

在节点级别记录:

     

容器化应用程序写入stdout和stderr的所有内容都是   由容器引擎处理和重定向到某处。例如,   Docker容器引擎将这两个流重定向到logging driver,它在Kubernetes中配置为写入文件   json格式。

     

节点级日志记录中的一个重要考虑因素是实现日志   旋转,以便日志不消耗所有可用存储   节点即可。

     

Kubernetes目前不负责轮换日志,而是负责   部署工具应该设置解决方案来解决这个问题。对于   例如,在Kubernetes集群中,由kube-up.sh脚本部署,   有一个logrotate工具配置为每小时运行一次。

     

您还可以设置容器运行时以旋转应用程序的日志   自动,例如通过使用Docker的log-opt。

     

在kube-up.sh脚本中,后一种方法用于COS图像   GCP和前一种方法用于任何其他环境。在   两种情况下,默认情况下,旋转配置为在日志时进行   文件超过10MB。

     

例如,您可以找到有关kube-up.sh的详细信息   在相应的script上为GCP上的COS图像设置日志记录。

以下是与logrotate相关的脚本的一部分:

# Installs logrotate configuration files
function setup-logrotate() {
  mkdir -p /etc/logrotate.d/
  # Configure log rotation for all logs in /var/log, which is where k8s services
  # are configured to write their log files. Whenever logrotate is ran, this
  # config will:
  # * rotate the log file if its size is > 100Mb OR if one day has elapsed
  # * save rotated logs into a gzipped timestamped backup
  # * log file timestamp (controlled by 'dateformat') includes seconds too. This
  #   ensures that logrotate can generate unique logfiles during each rotation
  #   (otherwise it skips rotation if 'maxsize' is reached multiple times in a
  #   day).
  # * keep only 5 old (rotated) logs, and will discard older logs.
  cat > /etc/logrotate.d/allvarlogs <<EOF
/var/log/*.log {
    rotate ${LOGROTATE_FILES_MAX_COUNT:-5}
    copytruncate
    missingok
    notifempty
    compress
    maxsize ${LOGROTATE_MAX_SIZE:-100M}
    daily
    dateext
    dateformat -%Y%m%d-%s
    create 0644 root root
}
EOF

}