k8s使用ceph rbd

2023-10-27

环境

节点 k8s角色 ceph 安装组件
192.168.122.120 k8s-master ceph admin mon1 osd0 osd1 osd2 osd9
192.168.122.121 k8s-slave1 ceph mon2 osd3 osd4 osd5 osd10
192.168.122.122 k8s-slave2 ceph mon3 osd6 osd7 osd8 osd11

k8s使用kubeadmin部署,部署参考官方文档
https://kubernetes.io/docs/setup/independent/install-kubeadm/
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
kubernetes 1.7.5
ceph参考以下文档部署
http://www.xuxiaopang.com/2016/10/10/ceph-full-install-el7-jewel/
ceph version 10.2.2

k8s以volume使用ceph rbd

使用官方提供的例子加以修改

apiVersion: v1
kind: Pod
metadata:
  name: rbd
spec:
  containers:
    - image: 192.168.122.1:5000/kubernetes/pause:v1
      name: rbd-rw
      volumeMounts:
      - name: rbdpd
        mountPath: /mnt/rbd
  volumes:
    - name: rbdpd
      rbd:
        monitors:
        - '192.168.122.120:6789'
        - '192.168.122.121:6789'
        - '192.168.122.122:6789'
        pool: ssd-pool
        image: rbdpd
        fsType: ext4
        readOnly: false
        user: admin
        keyring: /etc/ceph/ceph.client.admin.keyring
#        imageformat: "2"
#        imagefeatures: "layering"

这里无法定义使用size大小,估计rbd image多大,就是多大。
RBD可以设置readOnly: true可以被多个pod使用。但是设置readOnly: false则只能被一个pod使用。
可以将一个rbd image 设置readOnly: false被一个pod使用,写入数据。然后删除pod(rbd image仅仅被umount,数据还保留),然后将该rbd image设置readOnly: true可以被多个pod读取使用。

使用该yaml文件创建pod时,遇到不识别imageformat和imagefeatures关键字。
只有手动禁用rbd image的以下feature

rbd feature disable ssd-pool/rbdpd exclusive-lock object-map fast-diff deep-flatten
k8s以pvc和pv组合使用ceph rbd

k8s volume还不能完全满足实际生产过程对持久化存储的需求,因为k8s volume的lifetime和pod的生命周期相同,一旦pod被delete,那么volume中的数据就不复存在了。于是k8s又推出了Persistent Volume(PV)和Persistent Volume Claim(PVC)组合,故名思意:即便挂载其的pod被delete了,PV依旧存在,PV上的数据依旧存在。

k8spod->pvc->pv
pvc定义过程需使用到storageclass,pv可以使用也可以不使用storageclass

apiVersion: v1
kind: PersistentVolume
metadata:
  name: rbdpv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: rbdsc
  rbd:
      monitors:
        - '192.168.122.120:6789,192.168.122.121:6789,192.168.122.122:6789'
      pool: ssd-pool
      image: rbdpd
      fsType: ext4
      readOnly: false
      user: admin
      keyring: /etc/ceph/ceph.client.admin.keyring
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rbdpv8g
spec:
  capacity:
    storage: 8Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: rbdsc
  rbd:
      monitors:
        - '192.168.122.120:6789,192.168.122.121:6789,192.168.122.122:6789'
      pool: ssd-pool
      image: rbdpd
      fsType: ext4
      readOnly: false
      user: admin
      keyring: /etc/ceph/ceph.client.admin.keyring

这里创建连个PV,一个5G,一个8G。创建一个要求8G的pvc,它会选择8G的PV bond。当然最好使用pvc中的select中的label标识来选取PV。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: rbdclaim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
  storageClassName: rbdsc
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: rbdsc
provisioner: kubernetes.io/rbd
parameters:
  monitors: 192.168.122.120:6789,192.168.122.121:6789,192.168.122.122:6789
  adminId: admin
  adminSecretName: ceph-secret
  adminSecretNamespace: default
  pool: ssd-pool
  userId: admin
  userSecretName: ceph-secret-user
  fsType: ext4
  imageFormat: "2"
  imageFeatures: "layering"

这里的storageclass支持imageFormat和imageFeatures关键字

apiVersion: v1
kind: Pod
metadata:
  name: rbd
spec:
  containers:
    - image: 192.168.122.1:5000/kubernetes/pause:v1
      name: rbd-rw
      volumeMounts:
      - name: rbdpd
        mountPath: /mnt/rbd
  volumes:
    - name: rbdpd
      persistentVolumeClaim:
        claimName: rbdclaim

具体参数的解析可以去官网查看
https://kubernetes.io/docs/concepts/storage/persistent-volumes/

[root@k8s-master rbd]# kubectl get pods
NAME                           READY     STATUS    RESTARTS   AGE
cheddar-2695380518-hkx69       1/1       Running   4          22d
cheddar-2695380518-p82xm       1/1       Running   4          22d
rbd                            1/1       Running   0          1h
stilton-2773127498-jbvtx       1/1       Running   4          22d
stilton-2773127498-qm37l       1/1       Running   4          22d
wensleydale-1811307530-djn5s   1/1       Running   4          22d
wensleydale-1811307530-kj1zk   1/1       Running   4          22d
[root@k8s-master rbd]# kubectl get pvc
NAME       STATUS    VOLUME    CAPACITY   ACCESSMODES   STORAGECLASS   AGE
rbdclaim   Bound     rbdpv8g   8Gi        RWO           rbdsc          1h
[root@k8s-master rbd]# kubectl get pv
NAME      CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM              STORAGECLASS   REASON    AGE
rbdpv     5Gi        RWO           Recycle         Available                      rbdsc                    54m
rbdpv8g   8Gi        RWO           Recycle         Bound       default/rbdclaim   rbdsc                    48m
[root@k8s-master rbd]# kubectl get sc
NAME      TYPE
rbdsc     kubernetes.io/rbd 

在运行pod的节点上使用mount和docker inspect查看容器

[root@k8s-slave2 ~]# mount | grep rbd
/dev/rbd0 on /var/lib/kubelet/plugins/kubernetes.io/rbd/rbd/ssd-pool-image-rbdpd type ext4 (rw,relatime,seclabel,stripe=1024,data=ordered)
/dev/rbd0 on /var/lib/kubelet/pods/4f5249be-be12-11e7-8a16-525400db31fc/volumes/kubernetes.io~rbd/rbdpv8g type ext4 (rw,relatime,seclabel,stripe=1024,data=ordered)

[root@k8s-slave2 ~]# docker inspect e4d3d5e8dcd8
...
...
...
"Mounts": [
            {
                "Type": "bind",
                "Source": "/var/lib/kubelet/pods/4f5249be-be12-11e7-8a16-525400db31fc/volumes/kubernetes.io~rbd/rbdpv8g",
                "Destination": "/mnt/rbd",
                "Mode": "Z",
                "RW": true,
                "Propagation": "rprivate"
            },
...
...
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s使用ceph rbd 的相关文章

随机推荐

  • 高速计数器学习

    S7 1200 CPU 提供了最多 6 个 1214C 高速计数器 其独立于 CPU 的扫描周期进行计数 可测量的单相脉冲频率最高为 100KHz 双相或 A B 相最高为 30KHz 除用来计数外还可用来进行频率测量 高速计数器可用于连接
  • LeetCode刷题复习

    内容参考CyC大佬的LeetCode复习指南 算法思想复习 在考虑更优解时 先从数据状况入手 一般C 1s可以运行 1 0 7 1 0 8 10 7 10 8 107 108次 看有何特点可以利用 如有序 回文 重复 推公式等 1 1双指针
  • spring boot 如何配置Logback

    在 Spring Boot 项目中 Logback 是默认的日志框架 要配置 Logback 你需要创建一个名为 logback spring xml 的配置文件并将其放在项目的 src main resources 目录下 以下是一个详细
  • Unity设置物体旋转角度误区

    小白欢迎评论 共同探讨 共同进步 第一篇Unity的博文 这篇很短 接下来会陆续更新笔记本上之前记得坑 在这里有一个小误区 一般新手都非常容易出的错误 设置物体位置我们都是给transform position赋值 那么问题来了 设置物体的
  • ubuntu 12.04新安装好后需要进行的包升级和清理工作

    根据这么多次的操作经验 我发现 ubuntu系统在新安装好后需要进行一些包的升级和清理工作 不然的话 后续安装各种软件都不顺畅 会出现各种各样的问题 需要进行的包升级和清理工作其实很简单 只需要执行以下两条命令即可 apt get f in
  • 视觉slam g2o 编译出现 Cmake Error:By not providing “FindG2O.cmake““G2OConfig.cmake“ in CMAKE_MODULE_PATH错误

    第一步 这时需要在cmakelist文件中更改几行代码 代码如下 将LIST APPEND CMAKE MODULE PATH PROJECT SOURCE DIR cmake list APPEND CMAKE MODULE PATH X
  • Datawhale 李宏毅机器学习 Task2

    一 回归的定义和举例 定义 Regression 就是找到一个函数 function 通过输入特征 x 输出一个数值 Scalar 举例 股市预测 输入 过去10年股票的变动 新闻咨询 公司并购咨询等 输出 预测明天股市的平均值 自动驾驶
  • 【牛客网】BC146 添加逗号

    一 题目描述 牛客网题目链接 添加逗号 牛客题霸 牛客网 描述 对于一个较大的整数 N 1 lt N lt 2 000 000 000 比如 980364535 我们常常需要一位一位数这个数字是几位数 但是如果在这 个数字每三位加一个逗号
  • 在区块链里打模组化新概念,ALL要彻底实现技术融合并不容易!

    点击上方 蓝色字 可关注我们 编辑 铅笔盒 在今年的达沃斯论坛上 区块链与AI 3D打印等技术一起被列为第四次科技革命的重要技术 有人质疑加密货币 但几乎没有人否认区块链 可以预见接下来的一段时间所有焦点都将聚集在这个行业 区块链技术并不成
  • lua基础——基本语法

    类型 lua是动态类型语言 即变量的类型可以变 通过type可以测试给定变量的类型 下面是例子 python view plain copy print type helloworld
  • OLED拼接屏,有这5大优势,让其在会议商业及影院中常用

    OLED拼接屏是一种高端的显示屏 它由多个OLED屏幕拼接而成 可以实现更大尺寸的显示效果 在北京 OLED拼接屏已经被广泛应用于商业展示 会议室 电影院等场所 成为了展示和传播信息的重要工具 OLED拼接屏的优势 在于其高清晰度 高亮度
  • pandoc markdown 转 word

    安装 https www pandoc org installing html pandoc f markdown t html test md pandoc f html t docx o output docx
  • 软件设计师---下午题2

    下午题2 实体 弱实体 子实体 属性 复合属性 主键属性 联系 两个实体之间的联系 三个实体之间的联系 问题1 问题2 关系模式和主外键 一对一联系转换 一对多联系转换 多对多联系转换 三个实体的联系转换 实体和子实体的转换关系模式 实体
  • 159_模型_Power BI 地理分析之形状地图

    159 模型 Power BI 地理分析之形状地图 声明以下地图元素仅供学习交流所用 如需地图公开使用请提前做好报审工作 一 背景 当企业的体量达到一定体量的时候 保持稳定的增长是非常重要的事情 本案例展示如何用 Power BI 的形状地
  • GO语言入门学习(超详细的教程)-01

    GO入门教程 既然学一门语言首先我们就是要了解这个语言可以干什么 有什么作用 其优势在哪 喜欢自己看资料的同学我推荐这个网站 Go 语言结构 菜鸟教程 runoob com 写的特别详细 下面是我自己对这个语言的一些理解和想法 其中内容也基
  • JS 树形数据处理

    树形结构数据 let arr platformId 461417688549658625 platformName 蘑菇小姐的测试平台 roles roleId 968589 roleName 平台管理员 platformId 419419
  • 嵌入式 QT QListWidget 显示列表视图的小部件类

    目录 1 添加对象 2 设置间距 3 获取内容 4 删除对象 5 更改对象内容 在Qt框架中 QListWidget是一个用于显示列表视图的小部件类 它提供了一种方便的方式来显示和管理项目列表 QListWidget可以显示文本 图像和其他
  • Web Spider Babel安装 & Ast抽象语法 - 基本使用

    文章目录 一 资源地址 二 遍历 2 1 树结构遍历模式 2 2 案例 三 下载安装 四 案例操作 总结 提示 以下是本篇文章正文内容 下面案例可供参考 一 资源地址 Ast反混淆语法在线网址 https astexplorer net B
  • 高级信息系统项目管理(高项)论文——质量管理

    1 如果您想了解如何高分通过高级信息系统项目管理师 高项 你可以点击一下链接 高级信息系统项目管理师 高项 高分通过经验分享 高项经验 2 如果您想了解更多的高级信息系统项目管理 高项 软考 原创论文 您可以点击以下链接 高级信息系统项目管
  • k8s使用ceph rbd

    环境 节点 k8s角色 ceph 安装组件 192 168 122 120 k8s master ceph admin mon1 osd0 osd1 osd2 osd9 192 168 122 121 k8s slave1 ceph mon