V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
feng32

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

  •  
  •   feng32 · Oct 9, 2020 · 4841 views
    This topic created in 2031 days ago, the information mentioned may be changed or developed.
    在一些条件下,服务进程可能会异常退出。在传统部署模式下,首先做的一件事,是登到服务器上看日志

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

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

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

    把 docker 日志改成 json 模式, 然后用 daemonSet 去采集.
    anubu
        5
    anubu  
       Oct 10, 2020
    标准方法就是借助日志系统或其他方式对日志收集和转储;临时使用场景,如果不是 Pod 重启(重建)而是 Pod 里面某一个容器重启(重建),可以试试 kubectl logs 命令查看,kubectl logs deployment/nginx -c nginx-1 --previous
    jejer
        6
    jejer  
       Oct 13, 2020
    kubectl logs -p 取上一次 log
    stcheng
        7
    stcheng  
       Oct 17, 2020
    try fluentd
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2476 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 02:34 · PVG 10:34 · LAX 19:34 · JFK 22:34
    ♥ Do have faith in what you're doing.