こんにちは、GMOインターネットグループ株式会社の長谷川です。
今回は Kubernetes 環境での Rook Ceph ストレージ に関して語っていこうと思います。
目次
Rook Ceph とは
Rook Cephは、Kubernetes上(k8s上)に分散ストレージのCephをデプロイし、ストレージの運用を自動化するストレージオペレーターで、Cephは分散オブジェクトストレージ機能を提供する、オープンソースのストレージソフトウェアです。
https://rook.io/
Kubernetes 環境でデプロイし、ストレージクラスを用意することで、PersistentVolume(PV)を Dynamic Provisioning することが出来ます。
【STEP1】Kubernetes クラスタを用意する。
まず Rook Ceph をデプロイする Kubernetes クラスタを用意しましょう。
Ceph のレプリケーションはデフォルトの 3 レプリケーションで行う予定なので今回は以下の構成のクラスタをVMで用意し使用します。
control-plane 3 台
worker node 3 台 + それぞれに 1TB の 追加ストレージ
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
# uname -r
5.15.0-100-generic【STEP2】Kubernetes に Rook Ceph のオペレータをデプロイ
以下のリポジトリからサンプルのマニフェストをダウンロードします。
https://github.com/rook/rook
# git clone -b v1.13.6 https://github.com/rook/rook.git
# cd rook/deploy/examples/ダウンロード完了後は マニフェストのあるディレクトリに移動します。
早速、構築に必要になるマニフェストをデプロイしていきます。
# kubectl apply -f crds.yaml -f common.yaml -f operator.yamlデプロイが完了したら operator の pod が起動するまで待ちます。
# kubectl get pod -n rook-ceph --selector=app=rook-ceph-operator
NAME READY STATUS RESTARTS AGE
rook-ceph-operator-5f9bc6d66d-bz4mx 1/1 Running 0 2d23hまた 2024年3月現在では RBAC に関してもデプロイしないと次のステップの Rook Ceph クラスタのデプロイが出来ないのでデプロイしておきます。
# kubectl apply -f monitoring/rbac.yaml【STEP3】Kubernetes に Rook Ceph cluster をデプロイ
Rook Ceph クラスタをデプロイします。
今回は worker node に 1TB の追加ストレージをアタッチしてあるので、データの保存領域としてはそれを使用します。
追加ストレージは vdb に刺さっていると仮定し進めます。
クラスタをデプロイする前に、どのストレージを使用するかを指定するため以下を編集します。
# vim cluster.yaml
#
# 以下をクラスタの構成に応じて修正
#
storage:
useAllNodes: false # false に変更
useAllDevices: false # false に変更
config:
nodes:
- name: "worker-node01" # 追加ストレージを持っているワーカーノードを指定
devices:
- name: "vdb" # 追加ストレージは vdb としてワーカーノードに接続されているので指定する
- name: "worker-node02"
devices:
- name: "vdb"
- name: "worker-node03"
devices:
- name: "vdb"ここでは ワーカーノードに接続させた 3つの追加ストレージを指定していますが、それ以上の本数で構築することも出来ます。
編集を終えたらデプロイをします。
# kubectl apply -f cluster.yamlOSD の pod が作成完了し、正常にクラスタデプロイが完了するまで時間がかかるので、以下のコマンドでそれぞれのステータスを確認します。
pod のステータス確認
# kubectl get po -o wide -n rook-ceph -woperator のログの確認
# kubectl logs [rook-ceph-operator-pod-name] -n rook-ceph -fRook Ceph cluster の ヘルスの確認
# kubectl -n rook-ceph get cephclusterしばらく待っていると、以下のように Cluster created successfully & HEALTH_OK と表示され構築完了したことが確認出来ます。
# kubectl -n rook-ceph get cephcluster
NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH EXTERNAL FSID
rook-ceph /var/lib/rook 3 3d18h Ready Cluster created successfully HEALTH_OK e0e0201a-6419-4190-adf8-5bdc48d3fc8d【STEP4】Rook Ceph cluster の中を確認
Rook Ceph をの構築完了後に toolbox の pod をデプロイすることにより ceph osd status などの Ceph ストレージのコマンドを利用できるようになります。
toolbox のデプロイをします。
# kubectl apply -f toolbox.yamlデプロイ完了したら toolbox の pod に入って、コマンドを実行してみます。
以下のコマンドで pod に入ります。
# kubectl exec -ti -n rook-ceph $(kubectl get po -n rook-ceph -l app=rook-ceph-tools -o jsonpath={..metadata.name}) -- bash
bash-4.4$ ceph -s
cluster:
id: e0e0201a-6419-4190-adf8-5bdc48d3fc8d
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,c (age 3d)
mgr: b(active, since 3d), standbys: a
mds: 1/1 daemons up, 1 hot standby
osd: 3 osds: 3 up (since 3d), 3 in (since 3d)
data:
volumes: 1/1 healthy
pools: 4 pools, 81 pgs
objects: 25 objects, 465 KiB
usage: 148 MiB used, 3.0 TiB / 3.0 TiB avail
pgs: 81 active+clean
io:
client: 852 B/s rd, 1 op/s rd, 0 op/s wr上記のように pod にはいってceph のコマンドを実行することにより mon, mgr, mds, osd の状態を把握することが出来ました。
実際に様々な ceph コマンドが利用でき、ceph osd purge のようなコマンドも利用することが出来ます。
【STEP5】ストレージクラス等の設定
Kubernetes クラスタで用意した Rook Ceph ストレージを利用するために ストレージクラスの設定が必要になります。
Rook Ceph のリポジトリにはストレージクラスを定義するためのマニフェストがあるので適用していきます。
まずは、RADOS Block Device に対応した ストレージクラスを設定します。
以下でストレージクラスの設定をする。
# kubectl apply -f csi/rbd/storageclass.yaml
以下で rook-ceph-block をデフォルトのストレージクラスに指定
# kubectl patch storageclass rook-ceph-block -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
ストレージクラスが出来上がったか確認
# kubectl get sc -A
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
rook-ceph-block (default) rook-ceph.rbd.csi.ceph.com Delete Immediate true 3d19hrook-ceph-block は Kubernetes では ReadWriteOnce のみで使用できます。
またこのままだと ReadWriteMany では使用できないので CephFS のストレージクラスも設定して、ReadWriteMany が使えるようにします。
CephFS をデプロイする。
# kubectl apply -f filesystem.yaml
filesystem.yaml のデプロイ後に、csi/cephfs/storageclass.yaml もデプロイする。
# kubectl apply -f csi/cephfs/storageclass.yaml
ストレージクラスが出来上がったか確認
# kubectl get sc -A
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
rook-ceph-block (default) rook-ceph.rbd.csi.ceph.com Delete Immediate true 3d19h
rook-cephfs rook-ceph.cephfs.csi.ceph.com Delete Immediate true 13mまとめ
Rook-Ceph は、Kubernetes 上で Ceph ストレージを運用するためのシンプルで効率的な方法を提供します。高いスケーラビリティ、高可用性、コスト効率など、多くの利点がありますので是非チャレンジしてみてください。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(601)
-
イベント(239)
-
カルチャー(60)
-
デザイン(73)
TAG
- 5G
- AI
- AI TALK
- AI 機械学習強化学習
- AI/機械学習
- AIエージェント
- AIコーディング
- AI人財
- AI駆動
- Behind the Scenes
- BIT VALLEY
- blockchain
- ChatGPT
- ChatGPT Team
- Claude Team
- cloudflare
- cloudnative
- CNDO
- CNDT
- CODE BLUE
- ConoHa
- ConoHa VPS
- CSS
- CTF
- Designship
- developer
- DevRel
- DevSecOpsThon
- Docker
- DTF
- Engineering Journey
- expert
- EXPERT CROSS
- GMO AI&ロボティクス商事
- GMO AIR
- GMO DESIGN AWARD
- GMO Developers Day
- GMO Developers Night
- GMO Flatt Security
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOインターネット
- GMOインターネットグループ
- GMOインターネットグループ陸上部
- GMOグローバルサイン
- GMOコネクト
- GMOサイバーセキュリティ byイエラエ
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOメイクショップ
- GMOメディア
- GMOロボッツ
- GMO大会議
- GMO天秤AI
- Go
- GPUクラウド
- GTB
- Hack-1グランプリ
- IETF
- iOS
- IoT
- ISUCON
- Japan Drone
- JapanDrone
- Java
- JJUG
- JSAI2026
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MCP
- MetaMask
- MySQL
- NFT
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- Python
- RFC
- RPA
- Ruby
- SECCON
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- Takumi byGMO
- Terraform
- TypeScript
- UI/UX
- vibe
- VLA
- VPN
- VS Code
- XSS
- ZTNA
- アドベントカレンダー
- イベントレポート
- インターンシップ
- インハウス
- お名前.com
- クリエイターインタビュー
- クリエイティブ
- コンテナ
- コンピュータビジョン
- サイバーセキュリティ
- サマーインターン
- スクラム
- スパム対策
- スペシャリスト
- セキュリティ
- ソフトウェアサプライチェーン
- チームビルディング
- デザイン
- ネットのセキュリティもGMO
- ハーネスエンジニアリング
- バックエンド
- ヒューマノイド
- ヒューマノイドロボット
- フィジカルAI
- プログラミング教育
- ブロックチェーン
- フロントエンド
- ペアリング暗号
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- ロボット
- ロボティクス
- 京大ミートアップ
- 京都大学
- 人型ロボット
- 人工知能
- 人工知能学会
- 国際ロボット展
- 国際標準化
- 基礎
- 多拠点開発
- 大阪公立大学
- 宮崎オフィス
- 強化学習
- 応用
- 技育プロジェクト
- 技術広報
- 技術書典
- 拡張知能
- 新卒
- 新卒研修
- 映像
- 映像クリエイター
- 暗号
- 業務効率化
- 機械学習
- 決済
- 生成AI
- 産学連携
- 研究開発
- 耐量子暗号
- 脆弱性診断
- 開発者
PICKUP
-
【後編】「ショップ様のためになる」が判断の軸―インハウスデザイナーの役割と「売れるデザイン」
デザイン
-
【前編】決済画面のリニューアルでCVR35%→50%に改善 「最短ワンステップ」を実現したUI設計の舞台裏
デザイン
-
【Expert cross #3・後編】組織と業界を動かすエキスパートへ GMOサイバーセキュリティ byイエラエ・三村聡志が描く、「安全なロボット」を実現する世界
技術情報
-
【Expert Cross #3・前編】ソフト・ハードの両面から「話せる」エンジニアの流儀 GMOサイバーセキュリティ byイエラエ・三村聡志が語る、「伝えることで世界を良くする」エキスパートの在り方
技術情報
-
【イベントレポート後編】JSAI2026にGMOインターネットグループが登壇|GPUクラウドが支えるAI開発の最前線
イベント
-
【イベントレポート】JSAI2026にGMOインターネットグループが登壇|オープニング挨拶と最前線の研究発表
イベント