K8S:容器日志收集与管理

Kubernetes 里面对容器日志的处理方式,都叫作 cluster-level-logging,即:这个日志处理系统,与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计当然是为了保证,无论是容器挂了、Pod 被删除,甚至节点宕机的时候,应用的日志依然可以被正常获取到。

而对于一个容器来说,当应用把日志输出到 stdout 和 stderr 之后,容器项目在默认情况下就会把这些日志输出到宿主机上的一个 JSON 文件里。这样,你通过 kubectl logs 命令就可以看到这些容器的日志了。

第一种,在 Node 上部署 logging agent,将日志文件转发到后端存储里保存起来。这个方案的架构图如下所示

核心就在于 logging agent ,它一般都会以 DaemonSet 的方式运行在节点上,然后将宿主机上的容器日志目录挂载进去,最后由 logging-agent 把日志转发出去。

在 Node 上部署 logging agent 最大的优点,在于一个节点只需要部署一个 agent,并且不会对应用和 Pod 有任何侵入性。所以,这个方案,在社区里是最常用的一种。

Kubernetes 容器日志方案的第二种,就是对这种特殊情况的一个处理,即:当容器的日志只能输出到某些文件里的时候,我们可以通过一个 sidecar 容器把这些日志文件重新输出到 sidecar 的 stdout 和 stderr 上,这样就能够继续使用第一种方案了。

 由于 sidecar 跟主容器之间是共享 Volume 的,所以这里的 sidecar 方案的额外性能损耗并不高,也就是多占用一点 CPU 和内存罢了。

宿主机上实际上会存在两份相同的日志文件:一份是应用自己写入的;另一份则是 sidecar 的 stdout 和 stderr 对应的 JSON 文件。这对磁盘是很大的浪费。所以说,除非万不得已或者应用容器完全不可能被修改,否则还是建议你直接使用方案一,或者直接使用下面的第三种方案。

第三种方案,就是通过一个 sidecar 容器,直接把应用的日志文件发送到远程存储里面去。也就是相当于把方案一里的 logging agent,放在了应用 Pod 里。这种方案的架构如下所示:

 在这种方案里,你的应用还可以直接把日志输出到固定的文件里而不是 stdout,你的 logging-agent 还可以使用 fluentd,后端存储还可以是 ElasticSearch。只不过, fluentd 的输入源,变成了应用的日志文件。一般来说,我们会把 fluentd 的输入源配置保存在一个 ConfigMap 里。

这种方案虽然部署简单,并且对宿主机非常友好,但是这个 sidecar 容器很可能会消耗较多的资源,甚至拖垮应用容器。并且,由于日志还是没有输出到 stdout 上,所以你通过 kubectl logs 是看不到任何日志输出的。

此文章为7月Day26学习笔记,内容来源于极客时间《深入浅出Kubernetes》,推荐该课程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
监控KubernetesK8s容器内部的JVM是一种重要的操作,它能够帮助我们了解JVM的性能和健康状况以及整个容器环境中JVM的运行情况。以下是一些方法和工具来监控K8s容器内部的JVM。 首先,我们可以使用Kubernetes Dashboard或类似的监控工具来查看容器的资源使用情况,例如CPU、内存和存储。这可以帮助我们了解JVM是否正在消耗太多的资源或者是否需要进行资源调整。 其次,我们可以通过日志收集工具,如ELK(Elasticsearch、Logstash和Kibana)堆栈,监控JVM的日志输出。这些工具可以帮助我们实时查看JVM的日志,并进行搜索和过滤。 另外,可以使用性能监控工具,例如Prometheus和Grafana,来监控JVM的性能指标,如内存使用、GC(垃圾回收)时间、线程和类加载情况等。这些工具提供了仪表板和可视化图表,使我们能够直观地了解JVM的运行情况。 还可以使用工具如VisualVM和JMX(Java Management Extensions)来远程监控JVM。这些工具可以通过JMX协议访问JVM的MBean(管理Bean),并提供可视化界面来监控和分析JVM的运行时数据。 最后,我们还可以使用APM(Application Performance Monitoring)工具来监控K8s容器内部的JVM。APM工具可以提供更深入的性能监控和分析,例如方法级别的调用链跟踪、错误和异常的监测等。 综上所述,监控K8s容器内部的JVM可以通过使用Kubernetes Dashboard、ELK堆栈、Prometheus和Grafana、VisualVM、JMX和APM等工具来实现。这可以帮助我们全面了解JVM的性能和健康状况,并及时发现和解决潜在的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值