k8s集成ceph
当前推荐的集群安装方式有 Deploying a new Ceph Cluster with cephadm (opens new window)和 Rook
一、使用cephadm来管理ceph集群
首先 这种方式依赖的环境太多
- Python 3
- Systemd
- Podman or Docker for running containers
- Time synchronization (such as chrony or NTP)
- LVM2 for provisioning storage devices
并且我是用sealons来初始化kubernetes环境中已经有python2.6,安装python上后维护会很复杂,安装步骤繁琐(节点支持用dnf apt 和下载二进制文件来实现安装)但是还是繁琐
二、使用rook来管理集群
目前使用后者rook来实现部署,这个项目也是原生云基金会来推动的,加快kubernetes-storage的安装部署工作
1 | Rook 将分布式存储系统转变为自我管理、自我扩展、自我修复的存储服务。它可以自动执行存储管理员的任务:部署、引导、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理。 |
1.8/quickstart 初始化rook后
Kubernetes存储系统-云原生存储Rook部署-阿里云开发者社区
在
2.1、部署中的问题
直接创建会由于k8s角色和权限问题导致报错,报错的内容如下
system:serviceaccount:rook-ceph:rook-ceph-system” cannot get resource “pods”
t同时在网上看到的在rook的要求也看到 Pod Security Policies需要
需要配置cluster-admin
1 | kubectl create clusterrolebinding add-on-cluster-admin \ |
是在界面配置对应的角色才可以正常访问rook-ceph下的服务。
三、kubectl来初始化
参考链接使用 CephFS 作为存储类 - Rook | Kuboard
核心部分就是
1 | kubectl create -f https://kuboard.cn/statics/learning/ceph/rook-1.5.4/crds.yaml |
部署服务同时新建rook-ceph的 namespace
1 | cat > myfs.yaml <<EOF |
创建对应的 File System Name ,提供给选择
使用kubectl的yml文件初始化后的服务列表
创建对应的存储类