说明
k8s_event 监听日志打印,并将它们作为事件报告给 Kubernetes APIServer。
此插件需要 …
- kubeapi 插件,创建与 Kubernetes API 的连接。
- 创建/修补/更新 Events API 权限。
启用此插件是全局的:至少在一个服务器块中启用 k8s_event,可以全局启用它。
语法
k8s_event {
level LEVELS...
rate [QPS] [Burst] [CacheSize]
}
levels
选择应报告为 Kubernetes 事件的日志级别。LEVELS 是一个空格分隔的日志级别列表,支持的级别是debug
、error
、fatal
、info
和warning
。日志级别会反映在事件的Reason
字段上,例如它会使用 CoreDNSWarning 作为警告日志的Reason
字段。如果没有指定级别,则默认为error
和warning
。rate
用于控制事件限流。- QPS 是令牌桶的填充速率,以每秒查询数表示,默认为 1/300。
- Burst 是令牌桶速率过滤使用的突发大小,默认为 25。
- CacheSize 是用于在本地缓存事件的 lru 缓存大小,默认为 4096。
部署
默认情况下,此插件会代表其自己的 CoreDNS Pod 报告事件,PodName 和 Namespace 是通过 Downward API 收集的。
在 kubernetes 中部署 CoreDNS 时,应包括以下环境变量。
env:
- name: COREDNS_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: COREDNS_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
当缺少这些环境变量时,此插件将代表 default
命名空间报告事件。
此外,还应附加以下内容到 system:coredns
ClusterRole。
- apiGroups:
- ""
- events.k8s.io
resources:
- events
verbs:
- create
- patch
- update
示例
监听 info
、error
和 warning
级别的日志打印,并通过群集内 Kubernetes API 进行报告。事件发送速率由 QPS 0.15 token/s
、Burst 10 token
和 LRUCacheSize 1024 token
控制。
.:53 {
kubeapi
k8s_event {
level info error warning
rate 0.15 10 1024
}
}
输出
$ kubectl get ev -A -w
NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE
default 1s Normal CoreDNSInfo namespace/default plugin/reload: Running configuration SHA512 = <omitted>
default 1s Warning CoreDNSError namespace/default plugin/errors: 2 <omitted>. A: read udp <omitted>: i/o timeout
default 1s Warning CoreDNSError namespace/default plugin/reload: Corefile changed but reload failed: <omitted>