原 docker(20):修改tomcat配置文件,让kubernetes多个副本存储

1,关于


在使用kubernetes 上面遇到一个问题,
上次修改了tomcat head 信息日志:
https://blog.csdn.net/freewebsys/article/details/79960712

在有了日志之后,可以挂在存储文件。设置成多读多写的模式。
然后有个问题了,不知道是那个pod的日志了。
主要是因为k8s的pod 在重启了之后日志也就丢了。
一种做法是使用日志收集工具 elk。
再有一个办法是是用存储,共享目录 /tomcat8/logs
这个文件目录,让多个pod访问映射上。
然后每一个pod打印自己的host日志。

2,配置文件修改


修改catalina.sh
在 elif [ “$1” = “run” ]; then 后面增加:

elif [ "$1" = "run" ]; then

  shift
  tmpHost=`hostname`#  `hostname| cut -b 21-`
  echo "########################## change $tmpHost ##########################"
  sed -i -e "s/= catalina\./= catalina\.$tmpHost\./" $CATALINA_BASE/conf/logging.properties
  sed -i -e "s/= localhost\./= localhost\.$tmpHost\./" $CATALINA_BASE/conf/logging.properties
  sed -i -e "s/= manager\./= manager\.$tmpHost\./" $CATALINA_BASE/conf/logging.properties
  sed -i -e "s/= host-manager\./= host-manager\.$tmpHost\./" $CATALINA_BASE/conf/logging.properties
  sed -i -e "s/prefix=\"localhost_access_log/prefix=\"access_log_$tmpHost/" $CATALINA_BASE/conf/server.xml

.....

tomcat日志一部分在 conf/logging.properties 下面,还有access日志在 /conf/server.xml。
使用sed进行替换修改。

如果要是hostname 太长了,使用hostname| cut -b 21- 截取。

效果:

access_log_5b84db6f99-zkzxx.2018-04-25.txt  
host-manager.5b84db6f99-zkzxx.2018-04-25.log  
manager.5b84db6f99-zkzxx.2018-04-25.log
catalina.5b84db6f99-zkzxx.2018-04-25.log

多个pod会展示成多个文件,可以区分了。
而且pod再重启了也能记录老日志了,不丢失日志。

3,总结


tomcat 是死的,日志文件名字也可以修改。
在应对多个tomcat 日志,进行统一收集的时候存储到一个volume 上面。
还可以在加一个服务名称存储呢。k8s上面好东东真的特别的多。
还可以讲服务名称,第几个pod参数也写入到k8s上面。

本文的原文连接是:
http://blog.csdn.net/freewebsys/article/details/71261179

你可能感兴趣的:(docker,kubernetes)