k8s部署Ceph

2023-05-16

1. Helm部署

1.1 简介

为了将Ceph部署到K8S集群中,可以利用ceph-helm项目。 目前此项目存在一些限制:

  1. public和cluster网络必须一样
  2. 如果Storage的用户不是admin,你需要在Ceph集群中手工创建用户,并在K8S中创建对应的Secrets
  3. ceph-mgr只能运行单副本

1.2 仓库

执行下面的命令把ceph-helm添加到本地Helm仓库:

1.3 覆盖值 

可用值的说明如下:

ceph.yaml

network:
  public: 10.0.0.0/8
  cluster: 10.0.0.0/8
 
conf:
  ceph:
    config:
      global:
        # Ext4文件系统
        filestore_xattr_use_omap: true
      osd:
        ms_bind_port_max: 7100
        # Ext4文件系统
        osd_max_object_name_len: 256
        osd_max_object_namespace_len: 64
        osd_crush_update_on_start : false
 
ceph:
  storage:
    osd_directory: /var/lib/ceph-helm
    mon_directory: /var/lib/ceph-helm
    mon_log: /var/log/ceph/mon
    osd_log: /var/log/ceph/osd
 
# 和操作系统共享一个分区,基于目录的OSD
osd_directory:
  enabled: true
 
storageclass:
  name: ceph-rbd
  pool: rbd

1.4 创建K8S资源

为Ceph创建名字空间:

kubectl create -f ceph-helm/ceph/rbac.yaml

了部署Ceph集群,需要为K8S集群中,不同角色(参与到Ceph集群中的角色)的节点添加标签:

  1. ceph-mon=enabled,部署mon的节点上添加
  2. ceph-mgr=enabled,部署mgr的节点上添加
  3. ceph-osd=enabled,部署基于设备、基于目录的OSD的节点上添加
  4. ceph-osd-device-NAME=enabled。部署基于设备的OSD的节点上添加,其中NAME需要替换为上面 ceph-overrides.yaml中的OSD设备名,即:
    1. ceph-osd-device-dev-vdb=enabled
    2. ceph-osd-device-dev-vdc=enabled

对应的K8S命令:

1.5 Release 
1.6 检查状态 

确保所有Pod正常运行:

# rgw即RADOS Gateway,是Ceph的对象存储网关服务,它是基于librados接口封装的FastCGI服务
# 提供存储和管理对象数据的REST API。对象存储适用于图片、视频等各类文件
# rgw兼容常见的对象存储API,例如绝大部分Amazon S3 API、OpenStack Swift API
ceph-rgw=enabled
# mds即Metadata Server,用于支持文件系统
ceph-mds=enabled

现在从监控节点,检查一下Ceph集群的状态:

kubectl patch storageclass ceph-rbd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

这样没有显式声明StorageClass的PVC将自动通过ceph-rbd进行卷提供。

1.7 创建存储池

1.8 使用存储池 

可以先使用ceph命令尝试创建RBD并挂载:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ceph-pvc
  namespace: ceph
spec:
  accessModes:
   - ReadWriteOnce
  resources:
    requests:
       storage: 1Gi
  storageClassName: ceph-rbd

查看PVC是否绑定到PV:

kubectl -n ceph get secrets/pvc-ceph-client-key -o json --export | jq '.metadata.namespace = "default"' | kubectl create -f - 

1.9 卸载

rm -rf /var/lib/ceph-helm
rm -rf /var/lib/ceph

2. 使用 已存在Ceph集群

只需要安装相应的Provisioner,配置适当的StorageClass即可。示例:

  1. Provisioner:https://git.gmem.cc/alex/helm-charts/src/branch/master/ceph-provisioners
  2. 安装脚本:https://git.gmem.cc/alex/k8s-init/src/branch/master/4.infrastructure/0.ceph-external.sh

2.1 基于CephFS的卷

Kubernetes卷的动态Provisioning,目前需要依赖于external-storage项目,K8S没有提供内置的Provisioner。此项目存在不少问题,生产环境下可以考虑静态提供。

Provisioner会自动在Ceph集群的默认CephFS中创建“卷”,Ceph支持基于libcephfs+librados来实现一个基于CephFS目录的虚拟卷。

你可以在默认CephFS中看到volumes/kubernetes目录。kubernetes目录对应一个虚拟卷组。每个PV对应了它的一个子目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s部署Ceph 的相关文章

  • K8S 工作负载(一)

    K8S 工作负载 1 Pod Pod 是 Kubernetes 中创建 管理和调度的最小计算单元 用户可以在 K8S 中通过调用 Pod API生成一个 Pod 让 K8S 对其进行调度 Pod 是一组 一个或多个 容器 这些容器共享存储
  • kubeadm常用

    kubeadm常用 配置kubeadm自动补全 初始化一个master节点 导出kubeadm默认配置文件 将node节点加入集群 生成node配置 升级k8s版本 kubeadm升级node 维护或下线node节点 管理kubeadm j
  • 基于hostpath的k8s pod日志持久化

    基于hostpath的k8s pod日志持久化 前置条件 step1 修改服务的yaml文件 step2 推送日志到minio版保存 step3 优化 附加 简单了解 前置条件 考虑到pod的多副本 但同时需要将日志集中收集起来 所以采用h
  • k8s安装遇到过的一些问题

    无法获取recomended yaml文件 root k8master1 wget https raw githubusercontent com kubernetes dashboard v2 7 0 aio deploy recomme
  • k8s v1.16设置Job ttlSecondsAfterFinished不生效

    目录 Completed的job默认不会清理 配置自动清理job ttl机制自动清理完成的job ttl controller 开启 TTLAfterFinished kube apiserver开启TTLAfterFinished kub
  • kubernetes08(kubernetes的资源对象)

    文章目录 kubernetes08 kubernetes的资源对象 一 引子 二 kubernetes资源 一 kubernetes的资源对象作用 二 kubernetes的资源对象分类 三 kubernetes资源清单 一 kubenet
  • kubernetes集群更新证书(kubeadm方式)

    一 kubernets证书详情 1 查看证书 tree etc kubernetes pki etc kubernetes pki apiserver crt apiserver etcd client crt apiserver etcd
  • 初学容器:Docker

    1 环境初始化 1 1 安装git vim curl等常用工具 sudo apt update sudo apt install y git vim curl jq 1 2 ubuntu是不支持远程连接的 需要安装ssh服务 sudo ap
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • Rancher 图形化管理K8S

    题外话 之前我们一直都是使用命令行来管理K8S的 这种做法虽然对程序员来说看起来很炫酷 但有时候用起来还是挺麻烦的 今天我们来介绍一个K8S可视化管理工具Rancher 使用它可以大大减少我们管理K8S的工作量 希望对大家有所帮助 简介 R
  • 从Docker到Kubernetes——K8s网络核心原理

    文章目录 Dokcer的网络模型 kubernetes网络核心原理 IP per Pod模型 Kubernetes网络插件flannel Dokcer的网络模型 Dokcer默认使用单主机的网络方案 它默认创建一个名为docker0的网桥
  • kubectl常用命令

    alias k kubectl alias kc k create f alias kgp k get pods alias kdp k describe pods alias kdep k delete pods alias kl k l
  • k8s-node节点未找到flannel网络

    k8s node节点的flannel的IP地址不正确 问题描述 问题分析 1 检查node节点的cni和flannel网卡地址 2 检查master节点的flannel服务 如何重置flannel网络 1 删除node节点 master 2
  • k8s Failed to create pod sandbox错误处理

    错误信息 Failed to create pod sandbox rpc error code Unknown desc failed to get sandbox image k8s gcr io pause 3 2 failed to
  • Ceph优化系列(一):Ceph架构及性能优化

    转载 Ceph架构及性能优化 对分布式存储系统的优化离不开以下几点 1 硬件层面 硬件规划 SSD选择 BIOS设置 2 软件层面 Linux OS Ceph Configurations PG Number调整 CRUSH Map 其他因
  • Ceph入门到精通-Macvlan网络模式

    Docker中的Macvlan网络模式提供了一种将容器直接连接到宿主机网络的方式 使得容器可以拥有自己的MAC地址和与宿主机网络的直接连接 以下是使用Macvlan网络模式的一般步骤 创建Macvlan网络 docker network c
  • k8s部署Prometheus抓取pods的metrics

    1 暴露pods给Prometheus抓取 spec replicas app replicas template metadata annotations prometheus io scrape true prometheus io p
  • Ceph入门到精通-smartctl 查看硬盘参数

    smartctl 参数含义 Model Family Toshiba s Enterprise Capacity HDD Device Model TOSHIBA MG08ACss Serial Number sssssss LU WWN
  • flannel和calico区别

    k8s网络模式 Flannel数据包在主机间转发是由backend实现的 目前已经支持UDP VxLAN host gw等多种模式 VxLAN 使用内核中的VxLAN模块进行封装报文 也是flannel推荐的方式 host gw虽然VXLA
  • Flink 使用 Ceph 作为持久存储

    Flink 文档建议 Ceph 可以用作状态的持久存储 https ci apache org projects flink flink docs release 1 3 dev stream checkpointing html http

随机推荐

  • docker Centos 7 安装 xfce4 桌面 + x11vnc + novnc

    docker Centos 7 安装 xfce4 桌面 43 x11vnc 43 novnc 启动容器环境变量xfce4 桌面安装 启动 Xvfb安装 启动 xfce4 桌面 x11vnc安装 x11vnc启动 x11vnc novnc 上
  • docker kali 安装 xfce4 桌面 + tigervnc + novnc

    docker kali 安装 xfce4 桌面 43 tigervnc 43 novnc 启动容器环境变量准备工作安装xfce4 桌面tigervnc安装 tigervnc启动 tigervnc novncxfce4 启动弹窗如何关闭 xf
  • MySQL 普通查询、流式查询、游标查询以及使用 mybatis 如何实现

    MySQL 普通查询 流式查询 游标查询以及使用 mybatis 如何实现 MySQL 普通查询 流式查询 游标查询以及使用 mybatis 如何实现普通查询流式查询游标查询mybatis 如何实现参考 MySQL 普通查询 流式查询 游标
  • Thread.stop() 与 ThreadDeath 的理解、注意点以及误区

    MySQL 普通查询 流式查询 游标查询以及使用 mybatis 如何实现 Thread stop 的缺陷顶级的异常处理器不会打印关于 96 ThreadDeath 96 的信息ThreadDeath 只是一个通知 xff0c 捕获 Thr
  • spring 远程连接 rabbitMQ 报错

    1 springboot配置文件 application peroproperties spring rabbitmq username 61 guest spring rabbitmq password 61 guest spring r
  • Linux驱动开发:uboot启动流程详解

    前言 xff1a uboot 作为Linux驱动开发的 三巨头 之一 xff0c 绝对是一座绕不开的大山 当然 xff0c 即使不去细致了解uboot启动流程 依旧不影响开发者对uboot的简单移植 但秉持着知其然知其所以然 的学习态度 x
  • 基于C++实现HTTP的封装

    因为在项目中有和java后台对接的http接口 xff0c 所以在此学习和总结了一下 xff0c c 43 43 如何实现Http协议的post get put等请求方式 xff0c 通过搜集一些资料发现 xff0c 有现成的封装库可以实现
  • Python隐形水印invisible-watermark教程

    隐形水印 xff0c 顾名思义 xff0c 在图片上打上肉眼不可见的水印 xff0c 但是通过特定的解码方式可以查看水印标识 invisible watermark xff0c 一个Python库 xff0c 实现对图片加上隐形水印 xff
  • 【学习笔记】JavaScript 寻找字串的方法:includes/indexOf/search/match

    在处理数据时 xff0c 查找字符串是一种常见的操作 xff0c JavaScript 提供不同的方法来搜索字符串 其中 xff0c 最常用的方法包括 xff1a search indexOf includes 和 match xff0c
  • SLAM学习笔记——从零搭建完整的gazebo多机仿真SLAM(一)

    文章目录 引言第一部分 搭建gazebo仿真环境使用gazebo的building editor搭建地图使用launch文件加载world文件 第二部分 放入你的机器人第三部分 启动SLAM第四部分 使用键盘控制构建地图并保存键盘控制机器人
  • Ubuntu apt-get 国内镜像源替换(新手必看,超详细!各种镜像源网站都有)

    点击名称即可进入对应网站 阿里云镜像开源镜像站 xff08 已经更换地址 xff09 阿里云镜像开源社区镜像站 xff08 新地址 xff09 网易开源镜像站 清华大学开源镜像站 中科大开源镜像站 1 首先进入开源镜像站获取相应连接 这里以
  • 各种通信协议整理

    一个做嵌入式的工程师 xff0c 无论是做硬件还是软件 xff0c 每天都在接触一些通信相关的名词 xff0c 若不认真整理这些概念 xff0c 就很可能会混淆或忘记具体的含义与区别 xff0c 因为最近正好在做项目用到了SPI协议传输数据
  • client-go开发示例

    1 查看 node列表 2 查看pod列表 3 service列表 4 获取sa列表 5 查看deploy列表 6 查看pv列表 7 查看PVC列表 8 查看ns列表 9 查看ingress列表 10 查看Secret列表 11 创建sec
  • Ceph部署

    1 简介 Ceph是一个高性能 可扩容的分布式存储系统 xff0c 它提供三大功能 xff1a 对象存储 xff1a 提供RESTful接口 xff0c 也提供多种编程语言绑定 兼容S3 Swift块存储 xff1a 由RBD提供 xff0
  • API 优先级和公平性(APF)

    1 概述 目前apiserver默认的限流方式太过简单 目前k8s缺少客户端业务请求隔离 xff0c 一个错误的客户端发送大量请求可能造成其他客户端请求异常 xff0c 也不支持突发流量 2 开启APF APF测试 开启APF xff0c
  • 十大经典排序算法总结(C语言版本)

    前言 xff1a 排序算法 是最经典的算法知识 xff0c 也是每个合格程序员应该需要掌握的知识点 考虑到排序算法通常代码简短 xff0c 逻辑思维强和应用范围广等特性 xff0c 排序算法题目便成为了面试中的常客 在面试中最常考的是快速排
  • Unicode、UTF-8、UTF-16 终于懂了

    计算机起源于美国 xff0c 上个世纪 xff0c 他们对英语字符与二进制位之间的关系做了统一规定 xff0c 并制定了一套字符编码规则 xff0c 这套编码规则被称为ASCII编码 ASCII 编码一共定义了128个字符的编码规则 xff
  • Prometheus 的优雅关闭

    1 方法1 xff1a 用 pgrep f prometheus 找到运行的 Prometheus 进程号 使用 kill TERM 1234 来关闭 2 方法2 需要通过 web enable lifecycle 参数开启 lifecyc
  • Ceph运维操作

    1 操控集群 1 1 UPSTART Ubuntu系统下 xff0c 基于ceph deploy部署集群后 xff0c 可以用这种方法来操控集群 列出节点上所有Ceph进程 xff1a start ceph all 启动节点上特定类型的Ce
  • k8s部署Ceph

    1 Helm部署 1 1 简介 为了将Ceph部署到K8S集群中 xff0c 可以利用ceph helm项目 目前此项目存在一些限制 xff1a public和cluster网络必须一样如果Storage的用户不是admin xff0c 你
Powered by Hwhale