k8s_event

原始碼 首頁

由 CoreDNS 維護

啟用方式
k8s_event:github.com/coredns/k8s_event

k8s_event - 將 CoreDNS 狀態回報為 Kubernetes 事件。

描述

k8s_event 監聽日誌輸出,並將其作為事件回報給 Kubernetes APIServer。

此外掛程式需要…

  • kubeapi 外掛程式 來建立與 Kubernetes API 的連線。
  • Events API 的建立/修補/更新權限。

啟用此外掛程式是全程序範圍的:在至少一個伺服器區塊中啟用 k8s_event 會使其全域啟用。

語法

k8s_event {
    level LEVELS...
    rate [QPS] [Burst] [CacheSize]
}
  • levels 選擇哪些日誌等級應回報為 Kubernetes 事件。LEVELS 是一個以空格分隔的日誌等級列表,支援的等級為 debugerrorfatalinfowarning。日誌的等級將反映在事件的 Reason 欄位中,例如,警告日誌的 Reason 欄位將使用 CoreDNSWarning。如果未指定等級,則預設為 errorwarning
  • 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

範例

監聽 infoerrorwarning 等級的日誌輸出,並透過叢集內 Kubernetes API 回報。事件傳送速率由 QPS 0.15 token/secBurst 10 tokensLRUCacheSize 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>