跳至主要内容

博文

目前显示的是 二月, 2019的博文

k8s 源码阅读 -- eventf

Table of Contents 1. 前言 1.1. 代码参考 1.2. 代码详解 1.2.1. 结构定义 1.2.2. 实际使用时的流程 1.2.3. Event 在 kubelet 内部的工作流程 1  前言 k8s 是如何记录事件的 在 k8s 中 event 的记录追根溯源都是来自 client-go/tools/record/event.go 下的 EventRecorder 接口 1.1  代码参考 v1.14-alpha.2 k8s.io/kubernetes/staging/src/k8s.io/client-go/tools/record/ 1.2  代码详解 1.2.1  结构定义 在 event.go 中定义了 Eventsink EventRecorder EventBroadcaster 这三个接口 eventBroadcasterImpl 和 recorderImpl 这两个结构体   在 recorderImpl 下实现了几个函数 在 eventBroadcasterimpl 下实现了几个函数 1.2.2  实际使用时的流程 在 kubelet 启动时逐层调用 Newkubeletcommand => Run => run 这段代码可以在 /cmd/kubelet/app/server.go 下找到 这里我们不关心 kubelet 启动时做了什么,直接来看 event 相关的工作逻辑 在 629 行, 使用了 makeEventrecorder 这个函数 先初始化 eventBroadcasterImpl 然后 recorderImpl 初始化,并赋值给 kubeDeps.Recorder 如果需要记录日志,则直接使用 Eventf 记录日志;如下图 1.2.3  Event 在 kubelet 内部的工作流程 内部的工作流程发生在初始化 eventBroadcasterImpl 的时候 默认的参数如下 ] watch.NewBroadcaster(maxQueuedEvents, watch.DropIfChannelFull) NewBroa