説明
k8s_event はログの印刷をリッスンし、それらをKubernetes APIServerへのイベントとしてレポートします。
このプラグインは次のものが必須です…
- kubeapi プラグインを使用してKubernetes APIへの接続を作成します。
- イベントAPIへの作成/パッチ/更新のパーミッション。
このプラグインを有効にするのはプロセス全体で行われます。少なくとも1つのサーバーブロックで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秒当たりのクエリ数の充填率で、デフォルトは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
例
info
、error
、およびwarning
レベルのログの印刷をリッスンし、それらをクラスタ内のKubernetes APIを介して報告します。イベント送信率はQPS 0.15 token/sec
、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>