[toc]
基础环境信息
版本信息
操作系统:centos7.8
内核版本:3.10.0-1062.18.1.el7.x86_64
ceph版本:ceph version 14.2.9(nautilus)
主机角色信息
主机名 | IP地址 | 角色 | 配置 |
---|---|---|---|
rke-node1 | 192.168.0.5 | ceph-mon | — |
rke-node2 | 192.168.0.6 | ceph-osd1 | 100G HDD |
rke-node3 | 192.168.0.7 | ceph-osd2 | 100G HDD |
rke-node4 | 192.168.0.8 | ceph-osd3 | 100G HDD |
部署安装
配置源
配置ceph安装源
|
|
|
|
安装ceph-deploy
|
|
安装python库依赖
|
|
在ceph-deploy节点使用root用户登录,配置节点免密码ssh
|
|
|
|
建立集群
创建集群文件夹
|
|
创建集群部署ceph-monitor
|
|
注:
rke-node1为我要部署monitor的实际的FQDN主机名
注:
1、这里指定使用安装源,因为连国外网慢
2、将hostname替换为实际ceph集群节点的主机名,使用空格分隔 。
初始化ceph-mon
|
|
注意:
1、若遇到没有权限创建/var/run/ceph目录时可以手动创建然后将用户和属主改为ceph。
同步权限配置文件
|
|
注:将hostname替换为实际ceph集群节点的主机名
部署ceph-mgr
该组件的主要作用是分担和扩展monitor的部分功能,减轻monitor的负担,让更好地管理ceph存储系统。
初始化并启动OSD
|
|
注:将hostname替换为实际ceph集群节点的主机名,diskname替换为实际磁盘的名称 。
查看是否加入成功和ceph集群状态
查看osd状态
|
|
扩容节点
安装ceph
注:将hostname替换为实际ceph集群节点的主机名,使用空格分隔 。
同步权限配置文件
|
|
注:将hostname替换为实际ceph集群节点的主机名,使用空格分隔 。
初始化并启动OSD
注:将hostname替换为实际ceph集群节点的主机名,diskname替换为实际磁盘的名称 。
踢除节点
在集群中删除一个osd硬盘
在集群中删除一个osd 硬盘 crush map
删除认证信息
删除节点信息
测试
创建pool
因为我们osd数量小于4设置pg为128
在pool内创建文件
在test-pool内创建一个名为rbdtest的文件
查看是否创建成功
使用rbd将块映射到宿主机
因为ceph比较新,centos7默认内核不支持一些新feture,所以这里需要disable掉rbd块的一些feture,然后也可以不用rbd进行map使用nbd进行map。
|
|
|
|
格式化
挂载并测试写入数据
|
|
|
|
卸载
常见问题解决:
|
|
缺少python模块,通过pip在全部节点进行安装
|
|
重启全部节点
验证
ceph对接Kubernetes
使用ceph-csi插件对接Kubernetes
整体架构
默认情况下,Ceph块设备使用rbd池。为了更好区分,为Kubernetes专门创建一个pool
|
|
初始化池
配置ceph-csi插件
设置Kubernetes访问ceph的client和secret
获取mon地址和集群id
|
|
保存fsid和mon地址
生成类似于以下示例的csi-config-map.yaml文件,将fsid替换为“ clusterID”,并将monitor地址替换为“ monitors”:
注:单个monitor注意端口后不用接,
部署 kms-config.yaml
|
|
ceph-csi需要使用cephx凭据才能与Ceph集群进行通信。使用新创建的Kubernetes用户ID和cephx密钥生成类似于以下示例的csi-rbd-secret.yaml文件:
csi-rbd-secret.yaml
|
|
生成后,将新的Secret对象存储在Kubernetes中:
|
|
部署ceph-csi插件
配置RBAC
|
|
|
|
部署csi-rbdplugin.yaml
|
|
|
|
创建StorageClass
修改clusterID为实际的集群ID
csi-rbd-sc.yaml
注意:rbd-map对image-feture内核有需求,这里只配置layering。
在RancherUI创建PV
部署busybox挂载
在ceph底层查看卷