按照官方文档,很轻松就可以进行安装, 安装过程中遇到一些疑问, 在安装后也得到清晰的理解
1. /root/ceph-csi-rbd.yaml
这里面的clusterId 按理说应该是ceph的clusterId, 不过官方文档并没有首重强调修改,暂时保持默认
下面6789端口就是我们在物理机上安装的ceph mon的主机ip,端口
csiConfig:
- clusterID: "cluster1"
monitors:
- "192.168.0.14:6789"
- "192.168.0.15:6789"
- "192.168.0.16:6789"
2. ceph-csi-rbd-sc.yaml
apiVersion: v1
kind: Secret
metadata:
name: csi-rbd-secret
namespace: kube-system
stringData:
userID: admin
userKey: "AQCyCIhjBE7QCRAALS6vAj4WyaPAj6Y+dac0oQ=="
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-rbd-sc
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce","ReadOnlyMany","ReadWriteMany"]'
provisioner: rbd.csi.ceph.com
parameters:
clusterID: "cluster1"
pool: "rbd"
imageFeatures: layering
csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
csi.storage.k8s.io/provisioner-secret-namespace: kube-system
csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret
csi.storage.k8s.io/controller-expand-secret-namespace: kube-system
csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
csi.storage.k8s.io/node-stage-secret-namespace: kube-system
csi.storage.k8s.io/fstype: ext4
reclaimPolicy: Delete
allowVolumeExpansion: true
mountOptions:
- discard
这里面的 userId,userKey可以保持使用adimin,其中 userKey通过ceph节点获取
cat /etc/ceph/ceph.client.admin.keyring
我看到网上有些要求需要k8s各个节点配置文件 /etc/ceph/ceph.client.admin.keyring , 感觉不需要吧, 因为这里面已经配置key了, 为什么还需要额外在节点配置呢, 不过我的机器跟k8s机器是重叠的,所以跳过这个步骤的核实了 pool: "rbd" 这里面我使用的默认的rbd池了, 可以自己创建替换 rbd为如下的 kubernetes, 命令如下
a) 创建
ceph osd pool create kubernetes
b) 初始化
rbd pool init kubernetes
ceph osd pool ls detail
查看详情,默认是开启 application enable rbd 的
autoscale_mode on 也是开启的
pool 7 'kubernetes' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 32 pgp_num 32 autoscale_mode on last_change 812 flags hashpspool,selfmanaged_snaps stripe_width 0 application rbd
网上还有创建用户的, 我这里面就全部使用默认的admin, rbd了, 方便,也少一些麻烦
3. 在创建集群时候使用的文件 config-sample.xml 文件中找到 addons:[], 替换成如下内容, 其它部位内容不用修改, 重新创建集群时不会对集群产生影响, 我本来是希望单独仅创建这个插件的,但是没有成功, 还是按原来的文件,仅增加新的插件
addons:
- name: ceph-csi-rbd
namespace: kube-system
sources:
chart:
name: ceph-csi-rbd
repo: https://ceph.github.io/csi-charts
valuesFile: /root/ceph-csi-rbd.yaml
- name: ceph-csi-rbd-sc
sources:
yaml:
path:
- /root/ceph-csi-rbd-sc.yaml
4. 创建命令
./kk create cluster -f config-sample.yaml
5. 检查是否存在
kubectl get sc
可以看到如下图, 说明创建成功了
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
csi-rbd-sc (default) rbd.csi.ceph.com Delete Immediate true 50m
local (default) openebs.io/local Delete WaitForFirstConsumer false 4d22h
进入系统组件发现 ceph-csi-rbd-provisioner,ceph-csi-rbd-nodeplugin 是异常状态,并没有启动启来
进入详情看到 ImagePullBackOff 异常, 得到结论应该是image下载遇到问题
通过科学上网进行下载相关镜像并导入各个节点
可以选择香港服务器直接下载, 新机器安装docker可以参考如下文档
centos 7 安装 docker 记录_gs80140的博客-CSDN博客
涉及的docker镜像及处理过程 如下 我会打包统一放到资源里面供大家免费下载哦
docker pull gcr.io/k8s-staging-sig-storage/csi-provisioner:v3.2.1
docker pull registry.k8s.io/sig-storage/csi-resizer:v1.5.0
docker pull registry.k8s.io/sig-storage/csi-snapshotter:v6.0.1
docker pull registry.k8s.io/sig-storage/csi-attacher:v3.5.0
docker pull registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
docker save -o csi-provisioner-v3.2.1.tar gcr.io/k8s-staging-sig-storage/csi-provisioner:v3.2.1
docker save -o csi-resizer-v1.5.0.tar registry.k8s.io/sig-storage/csi-resizer:v1.5.0
docker save -o csi-snapshotter-v6.0.1.tar registry.k8s.io/sig-storage/csi-snapshotter:v6.0.1
docker save -o csi-attacher-v3.5.0.tar registry.k8s.io/sig-storage/csi-attacher:v3.5.0
docker save -o csi-node-driver-registrar-v2.5.1.tar registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1
下载到本地并上传到目标机器共享目录 /mnt/test, 此目录是mount到同一个块存储
sz *.tar
各节点执行docker导入镜像
docker load --input /mnt/test/csi-provisioner-v3.2.1.tar
docker load --input /mnt/test/csi-resizer-v1.5.0.tar
docker load --input /mnt/test/csi-snapshotter-v6.0.1.tar
docker load --input /mnt/test/csi-attacher-v3.5.0.tar
docker load --input /mnt/test/csi-node-driver-registrar-v2.5.1.tar
然后所有组件启动正常, 其中遇到 ceph-csi-rbd-nodeplugin->liveness-prometheus启动失败的问题, 原因是 8080 端口冲突了, 将 mgr的dashboard端口修改成 18080 即可 (修改 liveness-prometheus 的 8080 端口比较麻烦, 改服务也没有生效)
修改mgr端口
设置成18080, 防止跟其它端口冲突, 使用 80 导致无法访问
ceph config set mgr mgr/dashboard/njoffice04/server_port 18080
重启mgr
systemctl restart ceph-mgr@njoffice04
此时发现卷创建成功
rbd ls
显示
csi-vol-59b08fac-75f8-11ed-b99c-aeae15d7c828