Open6
Rook&CephでKubernetesの永続ボリュームを作ってPV/PVCを学ぶ
Cephの前提環境
ストレージ
パーディションも何もないきれいなストレージデバイスが無いとダメらしいです。
それと最低3台のストレージが必要とのこと。
(公式から引用)
- Raw devices (no partitions or formatted filesystems)
- Raw partitions (no formatted filesystem)
- PVs available from a storage class in block mode
ソフトウェア
LVMパッケージが必須らしいです。
sudo apt-get install -y lvm2
公式ドキュメント - Prerequisites
Rookインストール
公式ドキュメントのQuickstart -> TL;DRを実行するれば
kubernetes環境にデプロイできました。
git clone --single-branch --branch v1.8.3 https://github.com/rook/rook.git
cd rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster.yaml
公式ドキュメント - Quickstart -> TL;DR
Cephダッシュボード表示
CephダッシュボードでHEALTH_OK
が表示されていることを確認できました。
ここからKubernetesの永続ボリュームを作成していきます。
ストレージクラス(SC)の作成
今回はBlock Storageを作成します。
ここのページのファイルをダウンロードしデプロイします。
SCデプロイ前
$ kubectl get sc
No resources found
SCデプロイ
wget https://raw.githubusercontent.com/rook/rook/release-1.3/cluster/examples/kubernetes/ceph/csi/rbd/storageclass-test.yaml
kubectl apply -f storageclass-test.yaml
SCデプロイ後
$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
rook-ceph-block rook-ceph.rbd.csi.ceph.com Delete Immediate true 6s
Kubernetes永続ボリュームの公式ドキュメント
PV/PVCの作成
まずはPV/PVCを同時に作成してみます。
pvc-test.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pv-claim
labels:
app: test
spec:
storageClassName: rook-ceph-block
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
kubectl apply -f pvc-test.yaml
PV/PVCが作成されたか確認します。
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-9156365f-21f6-4a57-ab4b-66b1287e88a5 20Gi RWO Delete Bound default/test-pv-claim rook-ceph-block 2s
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-pv-claim Bound pvc-9156365f-21f6-4a57-ab4b-66b1287e88a5 20Gi RWO rook-ceph-block 20s
PV/PVCが作成されていることが確認できました。
削除してみます。
$ kubectl delete -f pvc-test.yaml
$ kubectl get pv
No resources found
$ kubectl get pvc
No resources found in default namespace.
PV/PVCが削除されていることが確認できました。