🙄

rookのdiscovery Pod

2021/01/01に公開

はじめに

本記事はRookと仲間たち、クラウドネイティブなストレージの Advent Calendar 202014日目を後からこっそり埋めるためのものです。

Rook/CephにはさまざまなPodがあるのですが、今回はそのうちrook-discover-*という名前がついた、通称discovery Podを紹介いたします。

discovery podの役割

discovery podはdaemonsetによって管理されており、クラスタ上の全node上に存在します。このpodは定期的にノード上のデバイス構成に変化があるかを監視しており、デバイスが追加されて、かつ、それがCeph Cluster CRに記載の条件にマッチしていればoperatorに通知し、operatorはOSDを作るという役割を持っています。

このpodはRookが直接デバイスを管理するhost-basedクラスタにおいては有用なのですが、Rookが直接デバイスを管理せずにpersistent volume上にOSDを作るPVC-basedクラスタでは必要ありません。このためoperatorの設定にはdiscovery daemonを無効化する項目があります。

host-basedクラスタについても通常はoperatorが他のイベント(worker増設やCephCluster CRの書き換え)を認識してOSDを作ってくれるので問題はありません。唯一問題になるのがデバイスをhot addする場合なのですが、これについてもhot addしたときにoperatorを再起動すれば済みます。

「じゃあいらないのでは?」という判断によって、Rook v1.5.0以降ではdiscovery Podはデフォルトで無効化されました。理由はリリースノートに書いています。

The discovery daemon is disabled by default in new clusters since the discovery is not necessary in most clusters.
Enable the discovery daemon if devices are being added to nodes and you want to automatically configure OSDs on new devices without restarting the operator.

ここの判断がどうあるべきかは人によって意見が分かれるところでしょうが、わたしは上記のようなレアケースのために全ノードに1GBもの大きさのRook/Cephコンテナを含むdiscovery podを常駐させなくてもいいと判断したため、コードレビュー時にapprovedを付けました。

おわりに

わたしはhost-basedクラスタを使っていないのでdiscovery daemonを使うことは今後ないでしょう。さようなら。

Discussion