Kubernetes の Event リクエスト制限の確認

Event の大量発生を制限し、運用に必要な Event が残ることを確認してください。

説明

EventRateLimit admission プラグインは、API サーバーを通じて保存する Event リクエストの量を制限します。適切な制限がないと、エラーを繰り返すワークロードやコントローラーが API サーバーと etcd に負荷をかける場合があります。他の API リクエスト全体を制限する機能ではないため、既存の保護策と実際の Event 発生量を併せて確認する必要があります。

想定される影響

  • Event の大量生成で API サーバーとストレージの負荷が増えるおそれがあります。
  • 重要な Event がノイズに埋もれ、見落とされる場合があります。

対処方法

  • 自己管理の API サーバーで使う場合は、導入バージョンの対応状況を確認し、EventRateLimit と AdmissionConfiguration による制限ポリシーを構成してください。マネージドサービスでは提供される制御手段を確認してください。
  • Event が多いワークロードを調べ、正常な Event を過剰に破棄しないよう制限値を試してください。このアルファ機能の動作と拒否結果は運用中も確認してください。

例

Kubernetes v1.30.0 の API サーバー引数だけを比較する過去の抜粋です。実際の利用にはサポート対象のバージョン、完全なコントロールプレーン構成、設定ファイルのマウントが必要です。指定先には EventRateLimit ポリシーを参照する AdmissionConfiguration を用意してください。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --enable-admission-plugins=AlwaysAdmit

AlwaysAdmit を追加していますが、このプラグインは Event の量を制限しません。他の既定 admission プラグインがすべて無効になる意味ではありません。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --enable-admission-plugins=EventRateLimit
        - --admission-control-config-file=/etc/kubernetes/eventratelimit.yaml

EventRateLimit と設定ファイルのパスを指定しています。意図した制限には、有効なポリシーと実際のファイルが必要です。

参考資料