Kubernetes k8吊舱内的访问日志

Kubernetes k8吊舱内的访问日志,kubernetes,Kubernetes,我们有一个k8集群。我试图从内部访问日志,而kubectl无法在内部工作。k8中的日志存储在哪里? 我们没有systemd,并且在文档中发现: If systemd is not present, they write to .log files in the /var/log directory. System components inside containers always write to the /var/log directory, bypassing the default

我们有一个k8集群。我试图从内部访问日志,而kubectl无法在内部工作。k8中的日志存储在哪里? 我们没有systemd,并且在文档中发现:

 If systemd is not present, they write to .log files in the /var/log directory. System components inside containers always write to the /var/log directory, bypassing the default logging mechanism.
但我在这里找不到任何日志。那么,我怎样才能访问这些日志,我可以从pod内部通过kubectl日志获得这些日志呢? 在没有任何日志机制设置的k8中,默认日志记录是如何工作的


PS:我也读过其他类似的帖子,但都不走运。

如果应用程序没有登录到文件,它有时可能会登录到stdout,而kubectl日志也应该显示这些日志


您可以尝试docker日志如果您想通过kubectl日志访问日志,那么这意味着它们最终将输出到stdout或stderr。Docker和kubelet在标准输出之上工作,以自己的方式处理这些日志,即通过记录插件。当您的进程向sdtout抛出某些内容时,它显然不会存储在容器的本地文件系统中的任何位置

这就是说,您可以将应用程序配置为登录到文件,但请记住,您需要处理日志旋转、清理等操作,否则您的容器将永远增长。如果不能同时使用这两种方法,那么可以将它们从docker/kubernetes日志中释放出来,这就不太好了。如果是这种情况,您可以在侧车中有一个进程,从装入的卷中读取日志文件并将其发送到stdout/stderr


真正的问题是为什么需要访问POD内的日志。知道可能有更好的方法来实现您所需要的东西,即首先通过一些解析器进程来传递它们。

我知道应用程序只是登录到容器中的一个文件/目录中

你能用一下吗

kubectl执行官-it bash 或

kubectl执行官-it sh


进入容器/吊舱并检查容器内的日志。

我在/var/log中看不到任何日志。pod不使用任何卷进行持久存储。kubectl get-o yaml | grep-i卷,它没有显示任何内容。@Akillanandbenkalvenkanna投票并接受我的答案,如果你认为它有用,让其他人知道这是正确的答案,谢谢!如果在磁盘、卷或stdout上找不到日志,我认为这是应用程序没有正确记录的问题。我可以看到带有kubectl日志的日志,我认为这表明日志正在写入stdout。但我的问题似乎没有得到回答,因为我的吊舱没有使用任何音量。所以我天真的问题是kubectl一定是从某处获取这些日志的。我只是想知道从哪里来的?kubectl日志在stdout和/或stderr上显示应用程序的输出。如果应用程序写入stdout,则不会将其存储在磁盘上,除非应用程序设计为这样做,即专门将stdout复制到磁盘/卷上的文件上。这就是我的问题所在,我无法在pod中找到日志。因此,默认情况下,您试图告诉我,从STDOUT和STDERR中抛出的日志没有存储在pod中或k8集群内的任何其他位置?我需要查看pod中日志的原因是创建一个脚本,以便liveness probe可以在我们看到错误或容器被杀死时启动,因为我们仍然没有它的HTTP端点。在k8s集群内是否有一个广泛而模糊的概念,即EFK是否在集群级别部署和集成?不管怎样,说到纯豆荚相关的部分,是的,这就是我要说的。您可能要做的一件事是编写一个小型控制程序,它将分叉来运行您的软件,并将子进程的stdout捕获/传递到容器stdout,同时像分析日志文件流一样对其进行分析。但实际上,最好的架构是在应用程序中支持http端点以公开。比如ie:8080/ready:8080/metrics等。是的,这就是长期目标。。与此同时,我试图找到一种方法来访问这些日志,而不用在pod中使用kubectl。
kubectl get <pod name> -o yaml | grep -i volume
kubectl get persistentvolumes --all-namespaces
kubectl get persistentvolumeclaims --all-namespaces