Kubernetes 下如何方便地获取不断重启的服务的日志

2020-10-09 19:57:41 +08:00
 feng32
在一些条件下,服务进程可能会异常退出。在传统部署模式下,首先做的一件事,是登到服务器上看日志

但是用了 Kubernetes,容器会被自动销毁,然后等待一段时间后再重建,这样就没法及时取得日志了

一个显而易见的解决方法,是让服务检测机制临时失效,让问题重现一次,等调试和修复工作完成后,再让检测机制重新生效;当然也可以日志上云,这样实际上就绕过了原问题

请问还有什么更好的解法吗?
3955 次点击
所在节点    Kubernetes
7 条回复
ManjusakaL
2020-10-09 20:04:46 +08:00
容器的话 stdout/stderr 输出的日志可以搜集到 ELK 或者其余后端存储
tcxurun
2020-10-09 20:05:02 +08:00
可以把日志挂载到宿主机
fuis
2020-10-09 20:25:36 +08:00
日志管理直接上 ELK 。
“让服务检测机制临时失效” 可以通过修改 YAML 实现,比如让 probes 返回正常,在 command args 里用 bash -c "your-service; tail -f /dev/null" 等待
joesonw
2020-10-10 12:50:07 +08:00
容器 runtime 会有日志呀. 例如 docker, 可以 json 模式写在磁盘里, 或者到 syslog, journald 等等.

把 docker 日志改成 json 模式, 然后用 daemonSet 去采集.
anubu
2020-10-10 12:55:12 +08:00
标准方法就是借助日志系统或其他方式对日志收集和转储;临时使用场景,如果不是 Pod 重启(重建)而是 Pod 里面某一个容器重启(重建),可以试试 kubectl logs 命令查看,kubectl logs deployment/nginx -c nginx-1 --previous
jejer
2020-10-13 15:06:45 +08:00
kubectl logs -p 取上一次 log
stcheng
2020-10-17 14:22:04 +08:00
try fluentd

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/713435

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX