kubernetes - 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 调度程序和 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。
推荐阅读
- javascript - 如何在 Ext Js 6.5.2 的网格标题列菜单中对“列”进行排序
- powershell - 从变量中删除特定行
- typescript - 三个 JS - 将 2 个 CubicBezierCurve3 与平滑连接一起加入?
- java - 某些手机无法从 android 中的 url(POST) 下载 pdf
- kubernetes - 为什么我的 Kubernetes 服务有时只能在 EKS 上运行?
- perl - 在perl代码中比较小数点前的整数值
- excel - iMacros - 复选框
- c# - NPOI - 从模板创建新的 excel 时条件格式不起作用
- javascript - 用于不安全服务器的 Google Goelocation API
- python - 基于行索引从numpy数组列中选择元素