kubelet-configの設定例
Kubernetesのクラスター運用では、ノード上のkubeletの動作を細かく制御することが重要です。そのために使用されるのが、kubelet-configです。この記事では、以下のkubelet-configの具体的な設定例をもとに、それぞれの項目がどのような意味を持ち、どのような場面で役立つかをまとめていきます。
kubelet-configの設定例
以下は、ConfigMap形式で定義されたkubelet-configの一部です。
apiVersion: v1
data:
kubelet: |
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
volumeStatsAggPeriod: 0s
containerLogMaxSize: 5Mi
containerLogMaxFiles: 3
各設定項目の詳細
1. volumeStatsAggPeriod
volumeStatsAggPeriod: 0s
役割
ボリュームの使用状況(ディスク使用量や容量など)を収集する頻度を指定します。
このデータはKubernetes APIサーバーに送信され、クラスター全体のリソース監視に活用されます。
値の意味
0s: 統計情報の収集を無効化します。これにより、kubeletがボリューム関連のデータ収集を行わなくなります。
他の例: 1m(1分ごとに収集)、30s(30秒ごとに収集)
活用場面
高パフォーマンスが必要な環境:
ディスクI/OやCPU使用率を抑えたい場合に、この設定を無効(0s)にすることで負荷を軽減できます。ボリューム監視が不要なケース:
例えば、リソース監視を外部ツールで行っている場合、このデータ収集を無効にするのが有効です。
2. containerLogMaxSize
containerLogMaxSize: 5Mi
役割
コンテナのログファイルの最大サイズを指定します。ログファイルがこのサイズに達すると、新しいファイルにローテーションされます。
値の意味
5Mi: ログファイルのサイズを5MiBに制限します。
他の例: 10Mi(10MiBまで許容)、50Mi(50MiBまで許容)
活用場面
ディスク容量の節約:
ログサイズを適切に制限することで、ログが肥大化してディスク容量を圧迫するのを防ぎます。効率的なトラブルシューティング:
大量のログが生成される環境でも、サイズを制限することで必要な情報を見つけやすくなります。
3. containerLogMaxFiles
containerLogMaxFiles: 3
役割
ローテーション後に保持するログファイルの数を指定します。指定した数を超える古いログは削除されます。
値の意味
3: 最大3つのログファイルを保持します。
他の例: 5(5つまで保持)、10(10個まで保持)
活用場面
不要なログファイルを削減:
古いログが大量に蓄積されるのを防ぎ、ディスク容量を最適化できます。運用中のログ保全:
適度な数のログファイルを保持することで、障害発生時の過去データを一定範囲で参照できます。
実際の活用例
ケース1: 高負荷環境でのリソース最適化
ストレージが逼迫しやすい環境では、以下の設定を組み合わせてディスク容量の消費を抑えることができます:
volumeStatsAggPeriod: 0s: ボリューム統計の収集を無効化
containerLogMaxSize: 5Mi: ログファイルのサイズを小さく制限
containerLogMaxFiles: 3: 保持するログファイルの数を最小限に
ケース2: ログの効率的な管理
障害調査のために過去ログをある程度保持しつつ、ディスク容量を無駄に使わない設定を適用します:
containerLogMaxSize: 10Mi: ログサイズを適度に大きく設定
containerLogMaxFiles: 5: 最大5つのログを保持
設定の適用手順
ConfigMapを編集
次のコマンドでConfigMapを開きます:
kubectl edit configmap kubelet-config-1.27 -n kube-system
設定内容を保存
編集したConfigMapを保存します。
Dynamic Kubelet Configurationの確認
Dynamic Kubelet Configurationが有効であれば、ノード再起動なしで変更が反映されます。反映状況を確認するには:
kubectl describe node <ノード名>
まとめ
今回紹介したkubelet-configの設定は、リソース管理と運用効率の向上に大きく貢献します。
volumeStatsAggPeriodを活用して、ボリューム統計収集の頻度を調整し、システム負荷を抑える。
containerLogMaxSizeとcontainerLogMaxFilesでログの肥大化を防ぎ、ディスク容量を節約する。
運用環境やクラスターの規模に合わせて適切な値を設定し、Kubernetesの運用をより安定したものにしていきましょう。