作为调试的一部分,我需要跟踪诸如pod创建和删除之类的事件。在我的kubernetes设置中,我正在使用日志记录级别5。
Kube api服务器,调度程序,控制器等在主节点上运行,而小仆节点在运行kubelet和docker。
我正在使用journalctl
来获取主节点以及工作节点上的K8s日志。在工作节点上,我可以看到来自Docker和Kubelet的日志。这些日志包含我创建和销毁Pod时所期望的事件。
但是,在主节点上,我没有看到任何相关的日志,这些日志可能指示吊舱创建或移除请求的处理。
我还可以使用哪些其他日志或方法从Kubernetes主组件(API服务器,控制器,调度程序等)获取此类日志?
我已经检查了来自API服务器,控制器,调度程序,etcd容器的日志;他们似乎没有此类信息。
谢谢
答案 0 :(得分:1)
系统组件日志:
系统组件有两种类型:
在容器中运行的人
以及不在容器中运行的那些。
例如:
Kubernetes调度程序和kube-proxy在容器中运行
kubelet和容器运行时(例如Docker)不在容器中运行。
在具有systemd的计算机上,kubelet和容器运行时将写入日志。如果不存在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。