k8s_event

ソース ホーム

CoreDNSでメンテナンスされています

次で有効にします
k8s_event:github.com/coredns/k8s_event

k8s_event - CoreDNSステータスをKubernetesイベントに報告します。

説明

k8s_event はログの印刷をリッスンし、それらをKubernetes APIServerへのイベントとしてレポートします。

このプラグインは次のものが必須です…

  • kubeapi プラグインを使用してKubernetes APIへの接続を作成します。
  • イベントAPIへの作成/パッチ/更新のパーミッション。

このプラグインを有効にするのはプロセス全体で行われます。少なくとも1つのサーバーブロックでk8s_eventを有効にすると、グローバルに有効になります。

構文

k8s_event {
    level LEVELS...
    rate [QPS] [Burst] [CacheSize]
}
  • levelsは、Kubernetesイベントとして報告されるべきログのレベルを選択します。LEVELSはスペースで区切られたログレベルのリストであり、サポートされているレベルはdebugerrorfatalinfo、およびwarningです。ログのレベルはイベントのReasonフィールドに反映されます。例えば、警告ログの場合はReasonフィールドとしてCoreDNSWarningが使用されます。レベルが指定されていない場合、デフォルトはerrorwarningになります。
  • rateはイベントのスロットリングを制御するために使用されます。
    • QPSはトークンバケットの1秒当たりのクエリ数の充填率で、デフォルトは1/300です。
    • Burstはトークンバケットのレートフィルタリングで使用するバーストサイズで、デフォルトは25です。
    • CacheSizeはイベントをローカルにキャッシュするために使用されるlruキャッシュサイズで、デフォルトは4096です。

デプロイメント

デフォルトでは、このプラグインは自らのCoreDNS Podを代表してイベントを報告し、Pod名とネームスペースはダウントワードAPIを通じて収集されます。

CoreDNSをkubernetesにデプロイする場合、次の環境変数を指定する必要があります。

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

infoerror、およびwarningレベルのログの印刷をリッスンし、それらをクラスタ内のKubernetes APIを介して報告します。イベント送信率はQPS 0.15 token/secBurst 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>