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

再次进入容器

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

dusaihduasihdua

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

root@stdtest-empty-5487d59689-fbw9s:/# ls /cache/

test-empty.log

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

HostPath

在cache下写入日志

echo dusaihduasihdua >> /cache/test.log

我们 让容器崩溃

kill -11 1

再次进入容器

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

dusaihduasihdua

文件依旧存在

我们删除pod

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

dusaihduasihdua

文件依旧会存在

结论

Deployment 升级

Deployment 扩缩容

DaemonSet更新

Statefulset更新

pod崩溃

pod的uid是否变化

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

stdout

emptydir

hostpath

hostpath-subPathExpr

rootfs

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值