説明
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 と設定ファイルのパスを指定しています。意図した制限には、有効なポリシーと実際のファイルが必要です。