Open6

Rook&CephでKubernetesの永続ボリュームを作ってPV/PVCを学ぶ

Takayuki KoyamaTakayuki Koyama

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

https://rook.io/docs/rook/v1.8/pre-reqs.html#ceph-prerequisites

Takayuki KoyamaTakayuki Koyama

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

https://rook.io/docs/rook/v1.8/quickstart.html#tldr

Takayuki KoyamaTakayuki Koyama

Cephダッシュボード表示

CephダッシュボードでHEALTH_OKが表示されていることを確認できました。
ここからKubernetesの永続ボリュームを作成していきます。

cephダッシュボード

Takayuki KoyamaTakayuki Koyama

ストレージクラス(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
Takayuki KoyamaTakayuki Koyama

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が削除されていることが確認できました。