在Kubernetes中登录使用部署部署的pod

时间:2018-01-23 14:04:26

标签: kubernetes

我将尝试解释下面的问题,

  1. 使用部署创建广告连播,然后使用kubectl apply -f sampledep.yaml在其上再应用一次更新。

  2. 如果我们执行kubectl get pods,则会更改Pod名称。

  3. 因此,我们之前的pod中的任何日志都不再存在或可以被检索。

  4. 我现在将列出以下问题:

    1. 有没有办法检索该应用程序的旧pod日志?
    2. 有没有办法配置可以为pod累积的日志大小?
    3. 如果日志累积太多并且没有剩余空间,pod会发生什么情况!
    4. 在部署的pod中查看/管理kubernetes中的日志的推荐方法是什么?

4 个答案:

答案 0 :(得分:3)

  1. 尝试运行kubectl get pods --show-all。如果您可以在那里找到您的广告连播,则可以使用kubectl logs <pod name>。如果没有,我认为你不能再检索日志了。

  2. 管理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)

  
      
  1. 是否有办法为该应用程序检索旧的pod日志?
  2.   

如果删除了Pod,则不会。

  
      
  1. 有没有一种方法可以配置可用于Pod累积的日志大小?
  2.   

是的,但是Kubernetes不处理日志轮换。因此,您必须使用logrotate

之类的东西来实施解决方案
  
      
  1. 如果日志累积过多并且没有剩余空间,那么pod会发生什么!
  2.   

然后,您的磁盘空间用完了!这也是实施监视和警报非常重要的原因,因此,当Kubernetes节点上的磁盘空间不足时,您可以采取一些措施。

  
      
  1. 在kubernetes中查看/管理已部署Pod的日志的推荐方法是什么?
  2.   

您的容器运行时将从容器中捕获日志并将其存储  在/var/lib/docker/containers(对于Docker)。 Kubernetes(更具体地说是kubelet)在/var/log/pods/<namespace>_<pod_name>_<pod_id>/<container_name>/处创建到这些日志文件的符号链接。您应该使用FilebeatfluentdFluent Bit之类的日志发送程序来监视/var/log/pods//var/log/containers/目录中的更改,并将日志条目推送到一个集中的位置,例如Kafka流,Elasticsearch或其他某种形式的持久性。