描述
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
欄位中,例如,警告日誌的Reason
欄位將使用 CoreDNSWarning。如果未指定等級,則預設為error
和warning
。rate
用於控制事件的節流。- QPS 是令牌桶的填充速率,以每秒查詢次數計算,預設為 1/300。
- Burst 是令牌桶速率過濾使用的突發大小,預設為 25。
- CacheSize 是用於本地事件快取的 LRU 快取大小,預設為 4096。
部署
預設情況下,此外掛程式會代表其自身的 CoreDNS Pod 回報事件,PodName 和 Namespace 是透過 向下 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/sec
、Burst 10 tokens
和 LRUCacheSize 1024 tokens
控制。
.: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>