• K8s日志类型综述


    日志类型综述

    一、容器标准输出格式

    容器引擎捕获了容器stdout和stderr,为每一行附加时间戳和来源并格式化之后写入宿主机的某个文件。

    容器引擎docker:

    {"log":"I0610 08:29:07.698664 Waiting for caches to sync\n", "stream":"stderr", "time:"2021-06-10T08:29:07.698731204Z"}

    容器引擎containerd:

    2021-12-01T03:13:58.298476921Z stderr F INFO [main] Starting service [Catalina]

    二、容器日志在宿主机真实路径

    stdout:

        - /var/log/pods/default_stdtest-55f6455bb6-gmk6q_7032a5f3-b7cb-4c87-8599-3e7d7cef0057/stdtest-stdout/*.log

    emptyDir:

    /var/lib/kubelet/pods/7032a5f3-b7cb-4c87-8599-3e7d7cef0057/volumes/kubernetes.io~empty-dir/cache/test.log

    hostpath:

    /hostdir/log/default/stdtest-55f6455bb6-gmk6q/test-hostpath.log

    rootfs:

    /var/lib/docker/overlay2/19b25ba2930090ce7f4f6190d81aca68b2d8fb20e3f212e93fe331ffc6845fd0/merged/var/log/test.log

    三、POD崩溃与对日志类型的影响

    emptyDir

    以容器stdtest-empty-5487d59689-8l65n为例子:

    在cache下写入日志

    echo dusaihduasihdua >> /cache/test.log

    我们 让容器崩溃

    kill -11 1

    再次进入容器

    1. root@stdtest-empty-5487d59689-8l65n:/# cat /cache/test.log
    2. dusaihduasihdua

    文件依旧存在,当我们删除掉emptyDir的pod

    1. root@stdtest-empty-5487d59689-fbw9s:/# ls /cache/
    2. test-empty.log

    test.log消失,也就是说容器崩溃emptyDir文件不会消失,但是如果容器滚动volume会丢失

    HostPath

    在cache下写入日志

    echo dusaihduasihdua >> /cache/test.log

    我们 让容器崩溃

    kill -11 1

    再次进入容器

    1. root@stdtest-empty-5487d59689-8l65n:/# cat /cache/test.log
    2. dusaihduasihdua

    文件依旧存在

    我们删除pod

    1. root@stdtest-host-5f5bd886b5-9wgbt:/# cat /cache/test.log
    2. dusaihduasihdua

    文件依旧会存在

    结论

    Deployment 升级

    Deployment 扩缩容

    DaemonSet更新

    Statefulset更新

    pod崩溃

    pod的uid是否变化

    旧有的pod uid不变,新增的pod是新的uid

    stdout

    emptydir

    hostpath

    hostpath-subPathExpr

    rootfs

    pod的uid变化时是否会删除掉日志文件

    容器崩溃重启后是否会删除掉日志文件

  • 相关阅读:
    女朋友说:你要搞懂了MySQL三大日志,我就让你嘿嘿嘿!
    Java注解
    python经典百题之矩阵对角线之和
    建站百科:常见的FTP软件有哪些?
    国内外17个学术论文网站推荐,记得收藏哦!
    Day03 计算机信息的存储
    sonarlint report监测结果分类
    智能制造时代下,MES管理系统需要解决哪些问题
    Docker运行docker中指定一个jar
    安装oh-my-zsh后全局包失效怎么解决
  • 原文地址:https://blog.csdn.net/qq_32783703/article/details/126705072