V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
feng32
V2EX  ›  Kubernetes

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

  •  
  •   feng32 · 2020-10-09 19:57:41 +08:00 · 4114 次点击
    这是一个创建于 1490 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在一些条件下,服务进程可能会异常退出。在传统部署模式下,首先做的一件事,是登到服务器上看日志

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

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

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

    把 docker 日志改成 json 模式, 然后用 daemonSet 去采集.
    anubu
        5
    anubu  
       2020-10-10 12:55:12 +08:00
    标准方法就是借助日志系统或其他方式对日志收集和转储;临时使用场景,如果不是 Pod 重启(重建)而是 Pod 里面某一个容器重启(重建),可以试试 kubectl logs 命令查看,kubectl logs deployment/nginx -c nginx-1 --previous
    jejer
        6
    jejer  
       2020-10-13 15:06:45 +08:00
    kubectl logs -p 取上一次 log
    stcheng
        7
    stcheng  
       2020-10-17 14:22:04 +08:00
    try fluentd
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3138 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:40 · PVG 20:40 · LAX 04:40 · JFK 07:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.