我将尝试解释下面的问题,
使用部署创建广告连播,然后使用kubectl apply -f sampledep.yaml
在其上再应用一次更新。
如果我们执行kubectl get pods
,则会更改Pod名称。
因此,我们之前的pod中的任何日志都不再存在或可以被检索。
我现在将列出以下问题:
答案 0 :(得分:3)
尝试运行kubectl get pods --show-all
。如果您可以在那里找到您的广告连播,则可以使用kubectl logs <pod name>
。如果没有,我认为你不能再检索日志了。
管理k8s中日志的推荐方法是使用像fluentd-elasticsearch这样的插件。这样,您永远不会将日志保存在pod FS本身上,只需将容器中的日志打印到STDOUT,并且流利的将自动将日志发送到Elasticsearch,稍后您可以使用Kibana查询。没有必要限制pod的累积日志,因为它永远不会在pod上累积。
答案 1 :(得分:1)
同意Erez提供的精通弹性搜索建议。要添加到他,你也应该能够kubectl logs --previous <pod name>
https://kubernetes.io/docs/concepts/cluster-administration/logging/
答案 2 :(得分:0)
当Pod崩溃或重新启动时,以前的容器日志仍保留在/var/log/docker/
容器位置。您将可以使用
kubectl logs pod-name -p container-name
答案 3 :(得分:0)
- 是否有办法为该应用程序检索旧的pod日志?
如果删除了Pod,则不会。
- 有没有一种方法可以配置可用于Pod累积的日志大小?
是的,但是Kubernetes不处理日志轮换。因此,您必须使用logrotate
- 如果日志累积过多并且没有剩余空间,那么pod会发生什么!
然后,您的磁盘空间用完了!这也是实施监视和警报非常重要的原因,因此,当Kubernetes节点上的磁盘空间不足时,您可以采取一些措施。
- 在kubernetes中查看/管理已部署Pod的日志的推荐方法是什么?
您的容器运行时将从容器中捕获日志并将其存储
在/var/lib/docker/containers
(对于Docker)。 Kubernetes(更具体地说是kubelet
)在/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/
处创建到这些日志文件的符号链接。您应该使用Filebeat,fluentd或Fluent Bit之类的日志发送程序来监视/var/log/pods/
或/var/log/containers/
目录中的更改,并将日志条目推送到一个集中的位置,例如Kafka流,Elasticsearch或其他某种形式的持久性。