超详细的k8s对接ceph RBD存储
前期准备
对接方式
有两种方式可以使用k8s对接ceph
- 使用第三方的rbd provisioner,但是由于官方已经不再进行维护因此随着版本越来越高,其对应的rbd provisioner内置的ceph-common版本已经跟不上ceph的版本了,现在其内置的ceph-common版本是m版,如果集群是m版可以考虑使用
- 使用官方的ceph csi,一直在更新,推荐使用,本文使用的就是该种方法
ceph-csi版本选择
一定要记得k8s的版本与ceph-csi对应!否则会有很多bug
现阶段对应ceph csi与k8s版本对应如下:
对于ceph集群最好是N版以及更高的版本
选择对应版本之后,仓库版本也要进行选择,比如我此次选择的是3.5.1版本,那么仓库版本需要选择3.5版本
不要git clone代码,我们用到的就是deploy
目录下的内容
镜像源
国内的推荐:
搭建环境(以RBD为例)
将
ceph-csi/deploy/rbd/kubernetes/
下的所有yaml文件拷贝到本地创建
csi-config-map.yaml
clusterID就是集群ID,
ceph -s
即可获得--- apiVersion: v1 kind: ConfigMap data:config.json: |-[{"clusterID": "2a5306a8-885f-40b7-91f6-ec9410b53d3c","monitors": ["10.20.20.103:6789","10.20.20.104:6789","10.20.20.105:6789"]}] metadata:name: ceph-csi-config
创建
csi-kms-config-map.yaml
,也可以不创建,但是需要将csi-rbdplugin-provisioner.yaml
和csi-rbdplugin.yaml
中kms有关内容注释掉--- apiVersion: v1 kind: ConfigMap data:config.json: |-{} metadata:name: ceph-csi-encryption-kms-config
创建
ceph-config-map.yaml
ceph.conf就是复制ceph集群的配置文件,也就是
/ect/ceph/ceph.conf
文件中的对应内容--- apiVersion: v1 kind: ConfigMap data:ceph.conf: |[global]fsid = 2a5306a8-885f-40b7-91f6-ec9410b53d3cpublic_network = 10.20.20.0/24mon_initial_members = server103mon_host = 10.20.20.103auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephx# keyring is a required key and its value should be emptykeyring: | metadata:name: ceph-config
创建
csi-rbd-secret.yaml
--- apiVersion: v1 kind: Secret metadata:name: csi-rbd-secretnamespace: default stringData:userID: kubernetesuserKey: AQA18kdi+4iYHhAAbRmfkKJ/XvB1PdYTTBEdwA== encryptionPassphrase: test_passphrase
其中的userID与userKey通过以下方式获取
创建存储池
ceph osd pool create k8s 128 128 rbd pool init k8s
创建并授权认证用户
ceph auth get-or-create client.kubernetes mon 'profile rbd' osd 'profile rbd pool=k8s' mgr 'profile rbd pool=k8s'
这里的
kubernetes
就是userID
,对应的key为userKey
apply以上的所有文件
一共如下:
ceph-csi/deploy/rbd/kubernetes/
(github上的文件)csi-config-map.yaml
csi-kms-config-map.yaml
(可有可无)ceph-config-map.yaml
csi-rbd-secret.yaml
创建storageclass
--- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:name: csi-rbd-sc provisioner: rbd.csi.ceph.com parameters:clusterID: 2a5306a8-885f-40b7-91f6-ec9410b53d3cpool: k8s #之前创建pool的名称imageFeatures: layeringcsi.storage.k8s.io/provisioner-secret-name: csi-rbd-secretcsi.storage.k8s.io/provisioner-secret-namespace: defaultcsi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secretcsi.storage.k8s.io/controller-expand-secret-namespace: defaultcsi.storage.k8s.io/node-stage-secret-name: csi-rbd-secretcsi.storage.k8s.io/node-stage-secret-namespace: defaultcsi.storage.k8s.io/fstype: ext4 reclaimPolicy: Delete allowVolumeExpansion: true mountOptions:- discard
创建pvc
--- apiVersion: v1 kind: PersistentVolumeClaim metadata:name: rbd-pvc spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: csi-rbd-sc
超详细的k8s对接ceph RBD存储相关推荐
- K8S使用Ceph RBD作为后端存储
一.准备工作 Ceph版本:v13.2.5 mimic稳定版 1.Ceph上准备存储池 [root@ceph-node1 ceph]# ceph osd pool create k8s 128 128 ...
- 超详细!K8s 面试知识点
标题超详细!K8s 知识点 简述ETCD及其特点? etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的 ...
- rancher k8s 对接 ceph 存储
本文永久链接: https://www.xtplayer.cn/kubernetes/storage/k8s-storage-ceph/ 本文编写的前提是已有正常工作的 ceph 存储服务,并且 Ra ...
- K8S最新版本集群部署超详细(k8s版本1.5.1)docker 版本19.03.1以及基本操作和服务介绍。
更新:今天抽时间写了昨天部署的一键脚本: date:Aug 3,2019 <Kubernetes最新版本1.15.1,shell脚本一键部署,刚刚完成测试,实用.> 最近利用空闲时间,把之 ...
- k8s使用 ceph rbd 模式 踩坑
创建pod时,kubelet需要使用rbd命令去检测和挂载pv对应的ceph image,所以要在所有的worker节点安装ceph客户端ceph-common. 将ceph的ceph.client. ...
- k8s对接smb/cifs存储
之前文章提到,k8s官方是支持nfs存储的,那么在windows常见的文件共享协议是否也支持呢.答案是肯定的.不过支持的方式是通过CSI接口进行支持的.官方提供的项目是csi-driver-smb 官 ...
- java超详细小程序对接微信支付(二),看完不会你打我
4.支付通知回调 B-验证签名 因为这个接口是微信进行回调的,但是如果别人知道了这个接口就给进行伪造信息进行调用这个接口 补充一点,这里这个接口最后要返回给微信success 不然会一直进行调用该接口 ...
- kubernetes挂载ceph rbd和cephfs
微信公众号搜索 DevOps和k8s全栈技术 ,关注之后,在后台回复 k8s视频,就可获取k8s免费视频和文档,也可扫描文章最后的二维码关注公众号. 目录 k8s挂载Ceph RBD 创建secret ...
- k8s主从自动切换mysql_K8S与Ceph RBD集成-多主与主从数据库示例
参考文章: 感谢以上作者提供的技术参考,这里我加以整理,分别实现了多主数据库集群和主从数据库结合Ceph RDB的实现方式.以下配置只为测试使用,不能做为生产配置. K8S中存储的分类 在K8S的持久 ...
最新文章
- CATransition
- c语言删除成绩记录的代码,学校让用c语言编的成绩管理系统,删除的代码有点问题,求教...
- WEB开发之如何改善PHP开发方式
- TestNG测试框架之TestNG.xml/YAML
- 知识图谱学习笔记-知识图谱介绍
- chart控件做实时曲线显示_用PyQt5.QtChart实现动态曲线图
- python numpy读取数据_python使用numpy读取、保存txt数据的实例
- 【数据结构与算法】之深入解析“删除二叉搜索树中的节点”的求解思路与算法示例
- linux系统调用函数---12
- angularjs $state.go页面不刷新数据
- 易维帮助台:让IT运维服务与企业业务发展需求高度融合
- Maven无法下载com.oracle:ojdbc14:jar解决方法
- APP支付和H5网页支付有哪些不同?
- 【算法入门必刷】数据结构-栈(一)
- UE4 材质笔记之水洼(贴花)
- 大数据正当时,理解这几个术语很重要
- HM代码阅读2:AMVP预测函数Void TEncSearch::xEstimateMvPredAMVP()
- IOS 开发 iPhone屏幕尺寸、分辨率及适配
- Linux卸载安装bind,Bind编译安装详解
- CuDNN library: 7.3.1 but source was compiled with: 7.6.5. StartAbort Unknown: Failed to get convolu