概要

ZFSファイルシステムを使用するノードでkubeletが起動できなくなっていたリグレッションを修正しました。cadvisorのZFSサポートプラグインが欠落していたことが原因で、プラグインを再導入することで解決しています。

背景・前提知識

kubeletとは: 各Kubernetesノードで動くエージェントで、Podの起動・停止・監視を担当します。kubeletが起動しないとそのノードではPodが一切動きません。

cadvisorとは: コンテナのリソース使用量(CPU、メモリ、ディスクなど)を収集するライブラリで、kubeletに組み込まれています。ストレージドライバーごとにプラグインがあり、ZFS専用のプラグインも存在します。

ZFSとは: 高機能なファイルシステムで、スナップショット、データ整合性チェック、高い信頼性などの特徴を持ちます。一部のKubernetesノードではrootファイルシステムやコンテナストレージにZFSを使用しています。

詳細

cadvisorのZFSサポートプラグインがkubeletのビルドから除外されていたことで、ZFSを使用するノードでkubeletが起動時にクラッシュするリグレッションが発生していました。このPRでZFSプラグインのコードを再追加することで修正されています。

変更量: 追加1830行、削除0行(サイズL)。追加行数が多いのはZFSプラグインのコード全体を再導入しているためです。

使用例

ZFSを使用するノードでkubeletのバージョンをアップグレードした際にノードが起動しなくなった場合、このPRが含まれるバージョンへのアップグレードで解決します。

参考リンク