RookにおけるCephクラスタの拡張

1 min read読了の目安(約1500字

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

Rook/CephにはPVC based clusterというタイプのクラスタがあります。このクラスタはOSDをKubernetes(以下K8s)のPersistentVolume(以下PV)の上に作ります。細かい説明は省きますが、リンク先のstorageClassDeviceSets[].countというところの数を増やすとOSDが増やせるというイメージを持ってもらっていればいいです。このPVC basedクラスタは、クラスタの拡張がスケールアウト、スケールアップの両面で簡単にできます。

まずはスケールアウトです。上記countイメージを増やした時にOSDを作る対象のPVはK8sの管理者が用意する必要があるのですが、Dynamic Provisioningに対応するCSIドライバを使えば、countを増やすとK8sが自動的にOSDに対応するPVを作る、ということができます。

Dynamic Provisioningに対応するCSIドライバはたくさんあるのですが、よくあるのがAmazon EBSをはじめとするクラウド上のブロックデバイスでしょう。TopoLVMを使えばローカルボリュームのDynamic Provisioningができます。

続いてスケールアップです。storageClassDeviceSetsにはvolumeClaimTemplateフィールドが埋め込まれており、さらにその中のstorageフィールドの値を増やすとOSDおよびその裏にあるPVを自動的に拡張してくれます。これはCSIドライバがVolume Expansionをサポートしている必要があります。

Cephクラスタの容量監視と上記機能の組み合わせによって、クラスタの空き容量が足りなくなってきたときに自動的にスケールアウト、スケールアップ両面で容量を簡単に増やすということもそう難しいことではないでしょう。監視は現状自前でする必要がありますが、クラスタの空き容量をCephClusterカスタムリソースに記録したり、それをもとに自動的にクラスタを拡張する機能も提案されています。

この提案されている機能が実現すると、クラウド上に構築したCephクラスタであればベンダのインフラとユーザの予算が許す限り好きなだけ自動的に拡張できるようになります。「わざわざそんなのをクラウド環境で作らなくても…」という話はありますが、かっこよくて夢があるので個人的には面白いと思っています。お金が無限にあればcountを1億くらいにしてみたいものです。