首页 > 解决方案 > Kubernetes 事件日志

问题描述

作为调试的一部分,我需要跟踪诸如 pod 创建和删除之类的事件。在我的 kubernetes 设置中,我使用的是日志记录级别 5。

Kube api server、scheduler、controller、etcd 在 master 节点上运行,minion 节点在 kubelet 和 docker 上运行。

我正在使用journalctl在主节点以及工作节点上获取 K8s 日志。在工作节点上,我可以看到来自 Docker 和 Kubelet 的日志。这些日志包含我在创建和销毁 pod 时所期望的事件。

但是,在主节点上,我看不到任何可能表明 pod 创建或删除请求处理的相关日志。

我可以使用哪些其他日志或方法从 Kubernetes 主组件(API 服务器、控制器、调度程序、etcd)获取此类日志?

我检查了来自 API 服务器、控制器、调度程序、etcd pod 的日志;他们似乎没有这样的信息。

谢谢

标签: kubernetes

解决方案


系统组件日志:

有两种类型的系统组件:

  • 那些在容器中运行的

  • 以及那些不在容器中运行的。

例如:

Kubernetes 调度程序和 kube-proxy 在容器中运行

kubelet 和容器运行时,例如 Docker,不在容器中运行。

在具有 systemd 的机器上,kubelet 和容器运行时写入 journald。如果 systemd 不存在,它们会写入 /var/log 目录中的 .log 文件。容器内的系统组件总是写入 /var/log 目录,绕过默认的日志记录机制。他们使用 klog 日志库。

主组件日志:

从在主节点上运行的那些容器中获取它们。

$ 
$ docker ps | grep apiserver
d6af65a248f1        af20925d51a3                 "kube-apiserver --ad…"   2 weeks ago         Up 2 weeks                              k8s_kube-apiserver_kube-apiserver-minikube_kube-system_177a3eb80503eddadcdf8ec0423d04b9_0
5f0e6b33a29f        k8s.gcr.io/pause-amd64:3.1   "/pause"                 2 weeks ago         Up 2 weeks                              k8s_POD_kube-apiserver-minikube_kube-system_177a3eb80503eddadcdf8ec0423d04b9_0
$ 
$ 
$ docker logs -f d6a  

但是所有这些日志记录方法都只是为了测试,您应该将所有日志(应用程序日志、容器日志、集群级别日志、所有内容)流式传输到中央日志记录系统,例如 ELK 或 EFK。


推荐阅读