3.3. Kubernetes イベントの期間を制限することで etcd のサイズを管理する


etcd のサイズを管理するには、Kubernetes API サーバーの etcd データベースに Kubernetes イベントが保存される最大期間を設定できます。eventTTLMintes プロパティーを指定することで、etcd データベースにイベントが保存される期間 (削除されるまでの期間) を制御できます。

eventTTLMinutes プロパティーは、Kube API Server Operator によって管理される KubeAPIServer カスタムリソースを通じて管理されます。

手順

  1. 以下のコマンドを入力して、KubeAPIServer カスタムリソースを編集します。

    $ oc patch kubeapiserver/cluster -p='{"spec": {"eventTTLMinutes": 5 }}' --type=merge

    eventTTLMintes プロパティーの値は、etcd データベースにイベントが何分単位で保存されるかを指定します。有効な値は 5 - 180 です。

  2. KubeAPIServer カスタムリソースへの変更を保存します。

    Kube API Server Operator は、Kube API Server Pod に新しい設定をロールアウトするなど、変更を自動的にリコンサイルします。

  3. 以下のコマンドを入力して、ロールアウトが完了するまで待ちます。

    $ oc adm wait-for-stable-cluster

    以下の例は、その処理中に表示される出力例を示しています。

    ...
    clusteroperators/kube-apiserver is still progressing after 10s
    ...
    clusteroperators/kube-apiserver stabilized at 2025-11-12T12:02:40+01:00 after 9m0s

検証

  • 設定が適用されたことを確認するには、次のコマンドを入力します。

    $ oc get cm config -n openshift-kube-apiserver -ojsonpath='{.data.config\.yaml}' | jq -r ".apiServerArguments[\"event-ttl\"][0]"

    出力には設定された期間が表示されます。次の例では 5 分です。

    5m
    注記

    eventTTLMintes プロパティーの新しい値を使用することで、新しく作成されたイベントのみが etcd に書き込まれます。古い既存のイベントは更新されず、以前に指定された TTL 値に従って期限切れになります。

  • 特定のイベントが短いリース期間で書き込まれたことを手動で確認するには、次のコマンドを入力して etcd 上でリース期間を直接調べます。

    $ oc exec -it pods/<etcd_pod_name> -n openshift-etcd -c etcdctl -- sh

    コマンドの出力は、次の例のようになります。

    sh-5.1h# $ etcdctl lease list | xargs -I {} etcdctl lease timetolive {}
    lease 1e6e9a77a71d8235 granted with TTL(15s), remaining(1s)
    lease 1e6e9a77a71d8247 granted with TTL(15s), remaining(3s)
    lease 1e6e9a77a71d8252 granted with TTL(15s), remaining(3s)
    lease 1e6e9a77a71d8310 granted with TTL(15s), remaining(11s)
    lease 1e6e9a77a71d8332 granted with TTL(15s), remaining(12s)
    lease 1e6e9a77a71d833e granted with TTL(15s), remaining(13s)
    lease 086e9a77a31f0776 granted with TTL(315s), remaining(177s)
    lease 086e9a779dcd8245 granted with TTL(10860s), remaining(8369s)
    lease 086e9a779dcd8fdf granted with TTL(10860s), remaining(8369s)
    注記

    他の API オブジェクトにもリースを設定できます。

  • 添付されたキーを検査するには、次のコマンドを入力してイベントのキープレフィックスでフィルタリングします。

    $ etcdctl lease list | xargs -I {} etcdctl lease timetolive --keys {} | grep "/kubernetes.io/events"

    出力は次の例のようになります。

    lease 0f009a77a48509ac granted with TTL(315s), remaining(74s), attached keys([/kubernetes.io/events/openshift-marketplace/redhat-operators-rrq79.18773e905b3e29a8 /kubernetes.io/events/openshift-marketplace/community-operators-csds7.18773e91b1e551a3])
    ...
    ...
    lease 1e6e9a77a71d3df1 granted with TTL(10860s), remaining(9478s), attached keys([/kubernetes.io/events/openshift-kube-apiserver/kube-apiserver-guard-ci-ln-pbkb71t-72292-dwp9h-master-2.18773c38ef4dcc03])

    この例では、TTL 値は 5 分 (300s) ですが、リースバッファーの再利用率 5% が加算されるため、出力には 315s と表示されます。

    注記

    リースが再利用可能な場合に、etcd はそのリースを再利用します。TTL プロパティーを必要とするリソースごとに固有の etcd リースを作成すると、API サーバーが何千もの個別のオブジェクトを追跡しなければならなくなるため、固有のリースを作成するのではなく、システムは既存のリースのより小さなプールを再利用します。新しいオブジェクトが特定の期間のリースを必要とする場合、マネージャーは、その期間に加えて 5% の小さな安全バッファーを含めて、残りの有効期間が十分にある既存のリースがないかを確認します。一致するものが見つかった場合、新しいオブジェクトはその既存のリースを使用します。そうでない場合は、新しいリースが作成され、他のユーザーが共有できるようにプールに追加されます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る