ストレージオーケストレーター rook入門1
tl;dr
- rook導入編です
- 公式サンプルを試します
rookとは
公式より
- Rook is an open source cloud-native storage orchestrator, providing the platform, framework, and support for a diverse set of storage solutions to natively integrate with cloud-native environments.
Rookはオープンソースのクラウドネイティブストレージオーケストレーターで、クラウドネイティブ環境とネイティブに統合するためのさまざまなストレージソリューションのプラットフォーム、フレームワーク、およびサポートを提供します。
また、rookは2018年1月にCNCFプロジェクトとして承認されています。
分散ストレージソフトウェア ceph
rookではcephという分散ストレージをkubernetes上のPodとして実行します。
cephはオープンソースの分散ストレージソフトウェアで、カリフォルニア大学で開発され、2006年にオープンソース化されました。
Ceph(セフ)とは
環境構築
百聞は一見にしかず、さっそくQuickstartに従って環境を作っていきます。
まずは、こちらのgithubをクローンします。
git clone https://github.com/rook/rook
出来たらまずはオペレーターを作成します。
kubectl create -f rook/cluster/examples/kubernetes/ceph/operator.yaml #実行後以下のようになればok kubectl -n rook-ceph get pod NAME READY STATUS RESTARTS AGE rook-ceph-mgr-a-55cc96f574-nvc5q 1/1 Running 0 20h rook-ceph-mon0-42dvk 1/1 Running 0 20h rook-ceph-mon1-dm4fd 1/1 Running 0 20h rook-ceph-mon2-nx22m 1/1 Running 0 20h rook-ceph-osd-id-0-78cc86dbd7-rl426 1/1 Running 0 20h rook-ceph-osd-prepare-aks-nodepool1-42015631-0-hc5qc 0/1 Completed 0 20h
次にクラスターを作成します。
kubectl create -f rook/cluster/examples/kubernetes/ceph/cluster.yaml #実行後以下のようになればok kubectl -n rook-ceph-system get pod NAME READY STATUS RESTARTS AGE rook-ceph-agent-4w7hg 1/1 Running 0 20h rook-ceph-operator-79d8679956-vgbrf 1/1 Running 0 20h rook-discover-mzr8s 1/1 Running 0 20h
これで前準備は出来ました!
動かしてみる
では、作成したクラスタにアプリを投入していきます。
今回は、block storageのサンプルを試します。
まずは、ストレージクラスとストレージプールを作成します。
kubectl create -f rook/cluster/examples/kubernetes/storageclass.yaml
サンプルアプリとしてwordpressを使います。
kubectl create -f rook/cluster/examples/kubernetes/mysql.yaml kubectl create -f rook/cluster/examples/kubernetes/wordpress.yaml #実行後以下のようになればok kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql-pv-claim Bound pvc-2b4c693d-a5a1-11e8-9d65-a201408ce52c 20Gi RWO rook-ceph-block 1h wp-pv-claim Bound pvc-2fc74982-a5a1-11e8-9d65-a201408ce52c 20Gi RWO rook-ceph-block 1h kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 21h wordpress LoadBalancer 10.0.250.161 <pending> 80:32620/TCP 1h wordpress-mysql ClusterIP None <none> 3306/TCP 1h
これで、rookをアプリケーションを作成することが出来ました。
このあとは、external-ipのアドレスにアクセスすればwordpressの画面が表示されるはずです。(未確認)
後片付け
kubectl delete -f wordpress.yaml kubectl delete -f mysql.yaml kubectl delete -n rook-ceph pool replicapool kubectl delete storageclass rook-ceph-block kubectl delete -f cluster.yaml kubectl delete -f operator.yaml
まとめ
今回は公式サイトのquickstartに従ってwordpressのアプリケーションをrook上に作成しました。
次回以降、もう少し詳しく見ていきたいと思います。