现在都讲究云原生,Rook是一个云原生存储开源项目。基于它部署Ceph将十分简单方便

  • 安装Ceph集群。下载Rook相应的Release包,并解压。Ceph部 署支持三种模式,这里以BlockStorage为例

    1
    2
    3
    4
    5
    
    cd cluster/examples/kubernetes/ceph
    kubectl create -f common.yaml
    kubectl create -f operator.yaml
    # 前面二个直接执行,下面的文件有很多注释,在生产环境下,根据实际情况进行调整。生产当中,建议拿几台机器专门跑Ceph存储节点
    kubectl create -f cluster.yaml
    
  • 准备StorageClass

    1
    2
    
    # 根据实际情况,修改自带的StorageClass相关属性
    vim cluster/examples/kubernetes/ceph/csi/rbd/storageclass.yaml
    
  • 声明PVC

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
        name: data-claim
    spec:
        storageClassName: rook-ceph-block
        accessModes:
        - ReadWriteOnce
        resources:
            requests:
                storage: 2Gi
    
    1
    
    kubectl apply -f pvc.yaml
    
  • Deployment应用PVC

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    ......
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /data
        name: data-volume
    ......
    terminationGracePeriodSeconds: 3
    volumes:
    - name: data-volume
      persistentVolumeClaim:
        claimName: data-claim
    

    额外组件

    Dashboard

    默认是启用Dashboard的,除非你禁用了。系统会创建Dashboard相关的PodService。但如果要外部能访问,还是要做一点事情的.

    • 暴露Service使外部可以访问

      1
      2
      3
      
      cd cluster/examples/kubernetes/ceph
      kubect apply -f dashboard-external-https.yaml
      kubectl get svc -n rook-ceph 
      
    • 获取Dashboard的密码

      1
      2
      3
      
      kubectl get secret rook-ceph-dashboard-password \
       -n rook-ceph -o jsonpath="{['data']['password']}" \
       | base64 --decode && echo