Rook是一个开源工具,用于在Kubernetes集群中部署和管理存储解决方案。通过使用Rook,用户可以轻松地创建和管理Ceph分布式存储系统,并将其集成到Kubernetes应用中。
首先需要确保你的Kubernetes集群已经准备好并且正在运行。接下来,你需要安装Rook。这可以通过helm
命令来完成:
# 添加Rook仓库
helm repo add rook https://rook.github.io/charts
# 更新仓库信息
helm repo update
# 安装Rook
helm install myrook -n rook-system rook/ceph \
--set cephCluster.name=myrook \
--set monCount=3 \
--set osdStorageClassName=nfs \
--set monitorSecretKeyFile=/etc/kubernetes/secrets/rook-key \
--namespace rook-system
安装完成后,需要配置Rook以便更好地适应你的环境。以下是一些常用的配置项:
cephCluster.name=myrook
monCount=3
(建议至少三个)osdStorageClassName=nfs
安装完成后,可以通过以下命令检查Rook组件是否正常运行:
# 检查Rook状态
kubectl get pods -n rook-system
# 检查Ceph集群状态
kubectl get cephclusters -n rook-ceph
在安装和配置完成后,可以通过以下步骤创建一个Ceph存储池:
# 创建一个新的Ceph块设备存储池
kubectl apply -f https://raw.githubusercontent.com/rook/rook/main/deploy/examples/crds/storage.crd.yaml
kubectl create -f https://raw.githubusercontent.com/rook/rook/main/deploy/examples/ceph-cluster-csi-secret.yaml
# 配置Rook CSI插件
cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ceph-block-device
provisioner: rook.io/block
parameters:
clusterName: ceph-cluster
EOF
# 创建PersistentVolumeClaim(PVC)
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
## storageClassName: ceph-block-device
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: example-ss
spec:
serviceName: "example-svc"
replicas: 3
selector:
matchLabels:
app: example-app
template:
metadata:
labels:
app: example-app
spec:
containers:
- name: example-container
image: nginx
volumeMounts:
- mountPath: /data
name: storage
updateStrategy:
type: RollingUpdate
volumes:
- name: storage
persistentVolumeClaim:
claimName: example-pvc
EOF
通过上述步骤,你已经成功地在Kubernetes集群中安装并配置了Rook。接下来你可以探索更多高级功能和自定义选项来进一步优化你的存储解决方案。