Kubernetes 1.36におけるkubeletメモリリークの修正
Kubernetes 1.36で発生するkubeletのメモリリーク問題について、その原因と修正方法を解説。kubeletが大量のPodを管理する際にメモリ使用量が増大し続ける現象のトラブルシューティング手順や、リークを防ぐための設定チューニング方法を紹介する。
背景メモ
- Kubernetes (K8s)はコンテナ化されたアプリケーションのデプロイ・管理を自動化するオープンソースのオーケストレーションツール。クラスタ全体を制御するコントロールプレーンと、実際にコンテナを動かす各ノードから構成される。
- kubeletは各ノードで動作するエージェントで、コントロールプレーンからの指示を受け取ってPod(コンテナの実行単位)を起動・監視する。このプロセスがメモリリーク(使用メモリが解放されず増え続ける不具合)を起こすと、ノード全体の不安定化やダウンにつながる。
- 本記事ではKubernetes 1.36(2026年リリース予定のバージョン)で発生したkubeletのメモリリークの原因を特定し、修正までを報告している。バージョン1.31ではメモリ使用量がPod数に比例する問題が修正されたが、その修正が新たなリークを引き起こした経緯がある。
- エンジニアリング組織にとってメモリリークは「気づきにくいが致命的」な障害。クラスタ規模が大きいほど影響範囲が広がるため、このような低レイヤーのバグ修正はK8s運用の安定性に直結する。