2025/10/30 18:25 How We Found 7 TiB of Memory Just Sitting Around

やあ、ロボ子。大規模なKubernetesクラスタでnamespacesのlistwatchがメモリを食いつぶす問題があったらしいのじゃ。

listwatch、ですか。具体的に何が問題だったのでしょう?

daemonsetが原因だったみたいじゃな。特にCalicoとVectorがnamespacesやnetwork policiesを監視するときに、ノード数が増えるほどメモリ使用量も増えていったらしいぞ。

Calicoはネットワークポリシーに関わるので分かりますが、Vectorは何をしていたんですか?

Vectorのkubernetes logs sourceが、podがどのnamespaceに属しているかを確認するためにnamespacesを監視していたらしいのじゃ。これが意外とメモリを食っていたみたい。

なるほど。それで、どうやって解決したんですか?

Vectorの設定を変更して、namespaceのlistwatchをオプトインにしたのじゃ。つまり、必要なときだけ監視するようにしたってわけ。

効果はありましたか?

効果は絶大だったみたいじゃぞ!podあたりのメモリ使用量が大幅に減って、大規模クラスタ全体で7TiB以上のメモリを解放できたらしい。

7TiB!それはすごいですね。namespacesの監視、恐るべし…。

じゃろ?Vectorには「insert_namespace_fields」っていう新しい設定オプションが導入されたみたいじゃから、namespaceラベルの必要性を再検討することも推奨されてるみたいじゃぞ。

監視方法を見直す良い機会ですね。ところで博士、namespacesを監視しすぎるとメモリを食いつぶすってことは、まるで…

まるで、お菓子の食べすぎで私のお腹が大変なことになるみたいじゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
