Rook项目 -- 使用默认storageclass
一般来说,我们需要为k8s配置一个默认的 storageclass
[1] ; 这样在安装一些项目的时候,省去了配置 pv
和 storageclass
的麻烦。
因此介绍一下存储编排项目 rook
[2];
虽然 Rook
项目支持多种存储系统,但是从目前的开发进度来看,对于 Ceph
的支持最为完善。所以本文主要介绍基于 Ceph
的 Rook
安装。
- 下载
Rook
源码
git clone https://github.com/rook/rook.git
- 部署
Rook Operator
cd rook/cluster/examples/kubernetes/ceph/
kubectl create -f operator.yaml
检查是否安装成功:
kubectl -n rook-ceph-system get pod
如果出现类似下面的结果,则说明安装成功:
NAME READY STATUS RESTARTS AGE
rook-ceph-agent-tkt9g 1/1 Running 0 2m13s
rook-ceph-operator-67f4b8f67d-9r48q 1/1 Running 0 47m
rook-discover-qqgf7 1/1 Running 0 2m13s
- 创建
Rook Cluster
kubectl create -f cluster.yaml
检查是否安装成功:
kubectl -n rook-ceph get pod
如果出现下面的结果,则说明安装成功:
NAME READY STATUS RESTARTS AGE
rook-ceph-mgr-a-8649f78d9b-xwpqj 1/1 Running 0 58s
rook-ceph-mon-a-698678bdd9-jkmsf 1/1 Running 0 96s
rook-ceph-mon-b-6cbb786c4-p762c 1/1 Running 0 85s
rook-ceph-mon-c-9585d96cb-n6drb 1/1 Running 0 72s
rook-ceph-osd-0-7f7dd474dc-srlvw 1/1 Running 0 25s
rook-ceph-osd-prepare-promote-rsqpn 0/2 Completed 0 32s
- 创建
Block
存储
storageclass.yaml
apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
name: replicapool
namespace: rook-ceph
spec:
replicated:
size: 1
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rook-ceph-block
provisioner: ceph.rook.io/block
parameters:
blockPool: replicapool
clusterNamespace: rook-ceph
fstype: ext4 # 这个选项首先检查自己的文件系统是什么, 可以通过 lsblk -f 查看
使用下面的命令创建:
kubectl create -f storageclass.yaml
- 将
Rook
创建的storageclass
设置成默认
首先检查是否创建成功:
kubectl get storageclass
结果正常应该是:
NAME PROVISIONER AGE
rook-ceph-block ceph.rook.io/block 2m
然后使用下面的命令设置成默认的 storageclass
:
kubectl patch storageclass rook-ceph-block -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
然后继续用上面的命令可以看到 rook-ceph-block
已经被设置成默认的 storageclass
了:
NAME PROVISIONER AGE
rook-ceph-block (default) ceph.rook.io/block 4m56s
[2] Rook官网