在Rancher2.0上安装Rook-Ceph

版本

Rancher 2.2.6
Rook Release-1.0

参考文档

安装

1 配置rancher的cluster.yml文件,
按照官方文档https://rook.io/docs/rook/v1.0/flexvolume.html
来配置flexvolume的路径,修改cluster.yml。

services:
  ...
  kubelet:
    image: ""
    extra_args: 
      volume-plugin-dir: /usr/libexec/kubernetes/kubelet-plugins/volume/exec
    extra_binds: 
      - /usr/libexec/kubernetes/kubelet-plugins/volume/exec:/usr/libexec/kubernetes/kubelet-plugins/volume/exec

修改后使用 rke up 或 ./rke_linux-amd64 up 重新配置kubernetes。该配置可能会影响rancher的使用,所以生产环境请注意。

2 安装Rook common和operator
可选择helm安装方法或kubectl安装方法。

  • 使用helm

先安装helm和tiller,在rancher的应用商店中加入 https://charts.rook.io/release, 默认配置安装即可。

  • 使用kubectl

先git clone下rook,然后checkout到stable的版本,目前是Release-1.0,进入rook/cluster/examples/kubernetes/ceph/,执行以下命令。
kube_config_cluster.yml为外部访问rancher的k8s集群需要的配置文件。

kubectl --kubeconfig=kube_config_cluster.yml create -f common.yaml
kubectl --kubeconfig=kube_config_cluster.yml create -f operator.yaml 

执行完成后,在rancher上修改rook-ceph命名空间到default(或其他项目)中,会看到rook-ceph-agent,rook-ceph-operator和rook-discover。
3 安装Rook cluster
修改cluster.yaml

  • Release1.0版本,需要解决dashboard的500错误问题,修改image至ceph/ceph:v14.2.2-20190722
  • 作者直接让ceph使用所有节点的所有空间,去注释了directories。实际应用时可按需求配置
  storage: # cluster level storage configuration and selection
    useAllNodes: true
    useAllDevices: true
    deviceFilter:
    location:
    config:
      # The default and recommended storeType is dynamically set to bluestore for devices and filestore for directories.
      # Set the storeType explicitly only if it is required not to use the default.
      # storeType: bluestore
      # metadataDevice: "md0" # specify a non-rotational storage so ceph-volume will use it as block db device of bluestore.
      # databaseSizeMB: "1024" # uncomment if the disks are smaller than 100 GB
      # journalSizeMB: "1024"  # uncomment if the disks are 20 GB or smaller
      # osdsPerDevice: "1" # this value can be overridden at the node or device level
      # encryptedDevice: "true" # the default value for this option is "false"
# Cluster level list of directories to use for filestore-based OSD storage. If uncommented, this example would create an OSD under the dataDirHostPath.
# 去注释
    directories:
    - path: /var/lib/rook

安装Rook Cluster

kubectl --kubeconfig=kube_config_cluster.yml create -f cluster.yaml
  • 安装完成后,三节点的负载如图

image.png

  • 添加存储类
kubectl --kubeconfig=kube_config_cluster.yml create -f storageclass.yaml 
  • 添加ingress,访问dashboard。dashboard的密码在资源-密文中的rook-ceph-dashboard-password条目

image.png

4 建立busybox测试,挂载硬盘,能看到服务成功启动,ceph-dashboard下的block下的Images有相应的pvc
5 最后在rancher集群层级的菜单中进入存储-存储类,将rook-ceph-block设置为默认

你可能感兴趣的:(ceph,rancher)