3.7. etcd のデータデフラグ
大規模クラスターにおける etcd のパフォーマンス低下やクラスター全体のメンテナンスアラームを防ぐため、etcd データベースのメトリクスを監視し、キースペースが大きくなりすぎた場合はデータストアのデフラグを実行してください。
大規模で密度の高いクラスターの場合、キースペースが大きくなりすぎてスペースのクォータを超えると、etcd のパフォーマンスが低下する可能性があります。定期的に etcd をメンテナンスしてデフラグし、データストアの領域を解放してください。Prometheus で etcd メトリクスを監視し、必要に応じてデフラグします。そうしないと、etcd はクラスター全体のアラームを発生させ、クラスターをメンテナンスモードにします。メンテナンスモードはキーの読み取りと削除のみを受け入れます。
以下の主要なメトリクスを監視してください。
-
etcd_server_quota_backend_bytes。これは現在のクォータ制限です。 -
etcd_mvcc_db_total_size_in_use_in_bytes。履歴圧縮後の実際のデータベース使用量を示します。 -
etcd_mvcc_db_total_size_in_bytes。デフラグ待ちの空き領域を含むデータベースのサイズを示します。
etcd データをデフラグし、etcd 履歴の圧縮などのディスクの断片化を引き起こすイベント後にディスク領域を回収します。
履歴の圧縮は 5 分ごとに自動的に行われ、これによりバックエンドデータベースにギャップが生じます。この断片化された領域は etcd が使用できますが、ホストファイルシステムでは利用できません。ホストファイルシステムでこの領域を使用できるようにするには、etcd をデフラグする必要があります。
デフラグは自動的に行われますが、手動でトリガーすることもできます。
3.7.1. 自動デフラグ リンクのコピーリンクがクリップボードにコピーされました!
etcd データベースの肥大化がパフォーマンスに影響を与える場合、etcdOperator はクラスターのメトリクスに基づいてメンバーディスクを自動的にデフラグすることができます。
etcd Operator はクラスターメトリクスを使用して最も効率的なデフラグアプローチを選択するため、ほとんどの場合、自動デフラグは適切に機能します。
etcd Operator はディスクを自動的にデフラグします。手動による介入は必要ありません。
次のいずれかのログをチェックして、デフラグが成功したことを確認します。
- etcd ログ
- cluster-etcd-operator Pod
- Operator ステータスのエラーログ
自動デフラグメンテーションは、Kubernetes コントローラーマネージャーなど、OpenShift Container Platform のさまざまなコアコンポーネントでリーダー選出の失敗を引き起こす可能性があり、その結果、障害が発生したコンポーネントが再起動されます。再起動は無害であり、次に実行中のインスタンスへのフェイルオーバーをトリガーするか、再起動後にコンポーネントが再び作業を再開します。
以下は、デフラグが正常に完了した場合のログ出力例です。
etcd member has been defragmented: <member_name>, memberID: <member_id>
以下は、デフラグが失敗した場合のログ出力例です。
failed defrag on member: <member_name>, memberID: <member_id>: <error_message>