Kubernetes更新Deployment镜像后能否查看新旧Pod全部历史日志
首先要先指出你操作的问题:你第二次执行的kubectl create deployment --image=<image-name-2.0> image-app命令默认会直接执行失败,因为create只能用来创建不存在的新资源,集群里已经有同名的image-app deployment了,所以这条命令根本不会触发镜像更新。
要正常更新deployment的镜像,应该用这个命令:
kubectl set image deployment/image-app *=<image-name-2.0>
下面是假设你已经用正确命令完成镜像更新后的日志相关问题解答:
- 旧Pod的日志不会被新Pod覆盖。Kubernetes里每个Pod的日志都是独立存在的,存储在它调度到的节点的本地磁盘上,和新Pod的日志完全分开,没有覆盖的可能。
- 只要旧Pod还没被集群的垃圾回收机制清掉,你就能查到旧版本的日志:
- 先执行
kubectl get pods --show-all,找到状态为Completed或者Terminating的旧Pod的名字 - 执行
kubectl logs <旧Pod名称>就能拿到旧Pod的运行日志
- 先执行
- 如果旧Pod已经被清理了(比如你改了deployment的历史副本保留数,或者手动删了旧的ReplicaSet),就没法用
kubectl logs直接查到历史日志了。如果需要长期留存所有版本的日志,建议提前搭集群级的日志采集方案,把所有Pod日志同步到独立的持久化存储里。
内容的提问来源于stack exchange,提问作者user1938143
相关产品推荐
相关产品推荐

