kubernetes部署ceph

文章目录
  1. 1. k8s集成ceph
    1. 1.1. 一、使用cephadm来管理ceph集群
    2. 1.2. 二、使用rook来管理集群
      1. 1.2.1. 2.1、部署中的问题
    3. 1.3. 三、kubectl来初始化

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
2
3
Rook 将分布式存储系统转变为自我管理、自我扩展、自我修复的存储服务。它可以自动执行存储管理员的任务:部署、引导、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理。

Rook 使用 Kubernetes 平台的强大功能通过 Kubernetes Operator 为每个存储提供商提供服务。

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需要

image.png

需要配置cluster-admin

1
2
3
4
5
6
7
8
9
10
kubectl create clusterrolebinding add-on-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:master



kubectl create rolebinding default-view \
--clusterrole=view \
--serviceaccount=rook-ceph:rook-ceph-system \
--namespace=rook-ceph

是在界面配置对应的角色才可以正常访问rook-ceph下的服务。

image-20220217093101275

三、kubectl来初始化

参考链接使用 CephFS 作为存储类 - Rook | Kuboard

核心部分就是

1
2
3
4
5
kubectl create -f https://kuboard.cn/statics/learning/ceph/rook-1.5.4/crds.yaml
kubectl create -f https://kuboard.cn/statics/learning/ceph/rook-1.5.4/common.yaml
kubectl create -f https://kuboard.cn/statics/learning/ceph/rook-1.5.4/operator.yaml
kubectl create -f https://kuboard.cn/statics/learning/ceph/rook-1.5.4/cluster.yaml

部署服务同时新建rook-ceph的 namespace

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cat > myfs.yaml <<EOF
apiVersion: ceph.rook.io/v1
kind: CephFilesystem
metadata:
name: myfs
namespace: rook-ceph
spec:
metadataPool:
replicated:
size: 3
dataPools:
- replicated:
size: 3
preservePoolsOnDelete: true
metadataServer:
activeCount: 1
activeStandby: true
EOF

kubectl create -f myfs.yaml

创建对应的 File System Name ,提供给选择

使用kubectl的yml文件初始化后的服务列表

image-20220310150347306

创建对应的存储类

image-20220310150259603