前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >10 张图详解 K8S 中部署 Ceph 与功能测试实战

10 张图详解 K8S 中部署 Ceph 与功能测试实战

作者头像
我的小碗汤
发布于 2023-03-20 01:58:58
发布于 2023-03-20 01:58:58
3.6K00
代码可运行
举报
文章被收录于专栏:我的小碗汤我的小碗汤
运行总次数:0
代码可运行

一、概述

Ceph 在 k8s 中用做共享存储还是非常方便的,Ceph 是比较老牌的分布式存储系统,非常成熟,功能也强大,支持三种模式(快存储、文件系统存储、对象存储),所以接下来就详细讲解如何在 k8s 使用 ceph,关于 ceph 的介绍可以参考以下几篇文章:

前提是需要一个 k8s 环境,k8s 环境的部署可以参考这篇文章:32 张配图详解 K8S 1.24 高可用部署,保姆级详细版!

二、Ceph Rook 介绍

Rook是一个开源的云原生存储编排工具,提供平台、框架和对各种存储解决方案的支持,以和云原生环境进行本地集成。

  • Rook 将存储软件转变成自我管理、自我扩展和自我修复的存储服务,通过自动化部署、启动、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 底层使用云原生容器管理、调度和编排平台提供的能力来提供这些功能。
  • Rook 利用扩展功能将其深度地集成到云原生环境中,并为调度、生命周期管理、资源管理、安全性、监控等提供了无缝的体验。有关 Rook 当前支持的存储解决方案的状态相关的更多详细信息,可以参考 Rook 仓库 的项目介绍。Rook 目前支持 Ceph、NFS、Minio Object Store 和 CockroachDB。

官网: https://rook.io/官网: https://rook.io/官网: https://rook.io/ 项目地址: https://github.com/rook

三、通过 Rook 在 k8s 中部署 Ceph

官方文档: https://rook.io/docs/rook/v1.10/Getting-Started/quickstart/

【温馨提示】k8s 节点各挂载一块(或者多块)20GB 的未使用的磁盘。

1)下载部署包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone --single-branch --branch v1.10.8 https://github.com/rook/rook.git

部署所用到的镜像如下:

由于镜像源在国外,国内无法下载,这里需要修改一些镜像或者提前下载 tag,操作如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd rook/deploy/examples/

#(registry.aliyuncs.com/google_containers/<image>:<tag>),后四个镜像我FQ下
docker pull registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.5.1

docker tag registry.aliyuncs.com/google_containers/csi-node-driver-registrar:v2.5.1 registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1

docker pull registry.aliyuncs.com/google_containers/csi-snapshotter:v6.1.0
docker tag registry.aliyuncs.com/google_containers/csi-snapshotter:v6.1.0 registry.k8s.io/sig-storage/csi-snapshotter:v6.1.0

docker pull registry.aliyuncs.com/google_containers/csi-attacher:v4.0.0
docker tag registry.aliyuncs.com/google_containers/csi-attacher:v4.0.0 registry.k8s.io/sig-storage/csi-attacher:v4.0.0

docker pull registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0
docker tag registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0 registry.k8s.io/sig-storage/csi-resizer:v1.6.0

docker pull registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0
docker tag registry.aliyuncs.com/google_containers/csi-resizer:v1.6.0 registry.k8s.io/sig-storage/csi-resizer:v1.6.0

docker pull registry.aliyuncs.com/google_containers/csi-provisioner:v3.3.0
docker tag registry.aliyuncs.com/google_containers/csi-provisioner:v3.3.0 registry.k8s.io/sig-storage/csi-provisioner:v3.3.0

2)部署 Rook Operator

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
# 检查
kubectl -n rook-ceph get pod

也可以通过 helm 部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm repo add rook-release https://charts.rook.io/release
helm install --create-namespace --namespace rook-ceph rook-ceph rook-release/rook-ceph -f values.yaml

3)创建 Rook Ceph 集群

现在 Rook Operator 处于 Running 状态,接下来我们就可以创建 Ceph 集群了。为了使集群在重启后不受影响,请确保设置的 dataDirHostPath 属性值为有效得主机路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd rook/deploy/examples
kubectl apply -f cluster.yaml

4)部署 Rook Ceph 工具

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd rook/deploy/examples
kubectl create -f toolbox.yaml

5)部署 Ceph Dashboard

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd rook/deploy/examples
kubectl apply -f dashboard-external-https.yaml

# 获取 dashboard admin密码
kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 -d

通过 Ceph Dashboard 查看 Ceph 集群状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看对外端口
kubectl get svc -n rook-ceph

https://<nodeip>:nodePort/

6)检查

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl get pods,svc -n rook-ceph

7)通过 ceph-tool 工具 pod 查看 ceph 集群状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl exec -it `kubectl get pods -n rook-ceph|grep rook-ceph-tools|awk '{print $1}'` -n rook-ceph -- bash

ceph -s

四、 测试验证

1) 块存储(RBD)测试

1、创建 StorageClass
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd rook/deploy/examples
# 创建一个名为replicapool的rbd pool
kubectl apply -f csi/rbd/storageclass.yaml
2、部署 WordPress
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f mysql.yaml
kubectl apply -f wordpress.yaml

2)文件系统 (CephFS) 测试

1、创建 StorageClass
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f csi/cephfs/storageclass.yaml
2、部署应用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f filesystem.yaml

3)对象存储 (RGW) 测试

1、创建对象存储
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl create -f object.yaml

# 验证rgw pod正常运行
kubectl -n rook-ceph get pod -l app=rook-ceph-rgw
2、创建对象存储 user
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl create -f object-user.yaml
3、获取 accesskey secretkey
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 获取AccessKey
kubectl -n rook-ceph get secret rook-ceph-object-user-my-store-my-user -o yaml | grep AccessKey | awk '{print $2}' | base64 --decode

# 获取 SecretKey
kubectl -n rook-ceph get secret rook-ceph-object-user-my-store-my-user -o yaml | grep SecretKey | awk '{print $2}' | base64 --decode
4、部署 rgw nodeport
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f rgw-external.yaml

kubectl -n rook-ceph get service rook-ceph-rgw-my-store rook-ceph-rgw-my-store-external
5、通过 api 接口使用 Ceph 对象存储
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#首先,我们需要安装 python-boto 包,用于测试连接 S3。:
yum install python-boto -y

# 然后,编写 python 测试脚本。
# cat s3.py
#!/usr/bin/python

import boto
import boto.s3.connection
access_key = 'C7492VVSL8O11NZBK3GT'
secret_key = 'lo8IIwMfmow4fjkSOMbjebmgjzTRBQSO7w83SvBd'
conn = boto.connect_s3(
    aws_access_key_id = access_key,
    aws_secret_access_key = secret_key,
    host = '192.168.182.110', port=30369,
    is_secure=False,
    calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.create_bucket('my-first-s3-bucket')
for bucket in conn.get_all_buckets():
        print "{name}\t{created}".format(
                name = bucket.name,
                created = bucket.creation_date,
)

具体测试过程在之前的文章中有很详细的介绍,可以参考:万字长文细讲分布式存储系统 Ceph 实战操作

- END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
腾讯 BiFang——业界首个生产级湖流一体解决方案
BiFang,中文为毕方,中国古神话中的神鸟,象征着变革和能量,隐喻湖流一体存储引擎的先进和可靠。
腾讯大数据
2025/06/09
1290
腾讯 BiFang——业界首个生产级湖流一体解决方案
腾讯游戏广告流批一体实时湖仓建设实践
腾讯游戏广告业务对数据准确性和实时性均有诉求,因此数据开发团队分别搭建了离线及实时数仓。技术视角下,这是典型的Lambda架构,存在数据口径不一致、开发维护成本高等弊端。在降本增效的大背景下,我们针对结合计算引擎Flink与数据湖技术Iceberg建设流批一体实时湖仓做了较多的探索和实践,已经具备可落地可复制的经验。借助Flink框架支持批处理作业的能力,我们实现了将流处理层和批处理层的计算层面统一于Flink SQL,存储层面统一于Iceberg。
可君
2023/01/10
2K0
数栈在湖仓一体上的探索与实践
大数据技术的发展历程中,继数据仓库、数据湖之后,大数据平台的又一革新技术——湖仓一体近年来开始引起业内关注。市场发展催生的数据管理需求一直是数据技术革新的动力。比如数据仓库如何存储不同结构的数据?数据湖又如何避免因为缺乏治理导致的数据杂乱现象?今天的文章想跟大家具体聊聊我们的数栈如何解决这些问题。
袋鼠云数栈
2022/04/14
5470
数栈在湖仓一体上的探索与实践
尘锋信息基于 Apache Paimon 的流批一体湖仓实践
尘锋信息 (www.dustess.com) 是基于企业微信生态的一站式私域运营管理解决方案供应商,致力于成为全行业首席私域运营与管理专家,帮助企业构建数字时代私域运营管理新模式,助力企业实现高质量发展。
从大数据到人工智能
2023/05/03
4.1K1
尘锋信息基于 Apache Paimon 的流批一体湖仓实践
BDCC- 数据湖体系
数据湖是一种存储系统,底层包括不同的文件格式及湖表格式,可存储大量非结构化和半结构化的原始数据。
小小工匠
2023/04/30
6510
BDCC- 数据湖体系
基于 Flink+Iceberg 构建企业级实时数据湖
Apache Flink 是大数据领域非常流行的流批统一的计算引擎,数据湖是顺应云时代发展潮流的新型技术架构。那么当 Apache Flink 遇见数据湖时,会碰撞出什么样的火花呢?本次分享主要包括以下核心内容:
Spark学习技巧
2021/03/05
2.4K0
基于 Flink+Iceberg 构建企业级实时数据湖
基于Flink+Hive构建流批一体准实时数仓
基于 Hive 的离线数仓往往是企业大数据生产系统中不可缺少的一环。Hive 数仓有很高的成熟度和稳定性,但由于它是离线的,延时很大。在一些对延时要求比较高的场景,需要另外搭建基于 Flink 的实时数仓,将链路延时降低到秒级。但是一套离线数仓加一套实时数仓的架构会带来超过两倍的资源消耗,甚至导致重复开发。
深度学习与Python
2020/09/28
2.3K0
基于Flink+Hive构建流批一体准实时数仓
湖仓一体
我理解就是各类数据爆发的公司当前数据平台架构遇到了各类各样的问题,寻求一个适配公司、平台的数据架构,一站式解决,但是大家对湖、仓本质的理解可能都不太一样,那又怎么谈湖仓一体呢。
jasong
2024/11/22
3510
数据湖|Flink + Iceberg 全场景实时数仓的建设实践
摘要:Apache Flink 是目前大数据领域非常流行的流批统一的计算引擎,数据湖是顺应云时代发展潮流的新型技术架构,以 Iceberg、Hudi、Delta 为代表的解决方案应运而生,Iceberg 目前支持 Flink 通过 DataStream API /Table API 将数据写入 Iceberg 的表,并提供对 Apache Flink 1.11.x 的集成支持。
大数据技术架构
2021/08/25
4.6K0
数据湖|Flink + Iceberg  全场景实时数仓的建设实践
实时湖仓一体规模化实践:腾讯广告日志平台
1. 背景 1.1 整体架构 腾讯广告系统中的日志数据流,按照时效性可划分为实时和离线,实时日志通过消息队列供下游消费使用,离线日志需要保存下来,供下游准实时(分钟级)计算任务,离线(小时级/天级/Adhoc)分析处理和问题排查等基于日志的业务场景。因此,我们开发了一系列的日志落地处理模块,包括消息队列订阅 Subscriber,日志合并,自研 dragon 格式日志等,如下图所示: Subscriber:Spark Streaming 任务,消费实时数据,落地到 HDFS,每分钟一个目录,供下游准实时
腾讯大数据
2022/09/20
1.3K0
实时湖仓一体规模化实践:腾讯广告日志平台
干货|流批一体Hudi近实时数仓实践
传统意义上的数据集市主要处理T+1的数据。随着互联网的发展,当前越来越多的业务场景对于数据时效性提出了更高的要求,以便及时快速地进行数据分析和业务决策,比如依托实时数据情况开展实时推荐、实时风控、实时营销等。特别是各种新技术的出现、发展和日趋成熟,实时数据分析和处理也成为可能。实时的大规模数据处理成为企业数字化转型过程中需要破解的难题,也是企业当前面临的一个普遍需求。
大数据老哥
2021/08/25
6.5K0
干货|流批一体Hudi近实时数仓实践
国内首场Iceberg Meetup!腾讯云推出TC-Iceberg开放智能数据湖方案
国内首场 Apache Iceberg Meetup 在深圳成功举办,腾讯云在活动中分享了 Iceberg 在腾讯云大数据中的成功实践,并推出了 TC-Iceberg 批流一体开放智能数据湖解决方案,帮助企业高效维护数据湖架构。
腾讯QQ大数据
2025/03/10
2230
国内首场Iceberg Meetup!腾讯云推出TC-Iceberg开放智能数据湖方案
农业银行湖仓一体实时数仓建设探索实践
在数字化转型驱动下,实时化需求日益成为金融业数据应用新常态。传统离线数仓“T+N”数据供给模式,难于满足“T+0”等高时效场景需求;依托Storm、Spark Streaming、Flink等实时计算框架提供“端到端”的实时加工模式,无法沉淀实时数据资产,存在实时数据复用性低、烟囱式垂直建设等不足。
ApacheHudi
2023/11/06
1.7K0
农业银行湖仓一体实时数仓建设探索实践
Apache Amoro Meetup No.2:助力湖仓一体生产实践
随着云计算,人工智能,实时计算等技术的飞速发展,传统的数据系统,如数据仓库和数据湖,虽然各自具有独特的优势,但在实际应用中也暴露出了一些局限性。为了解决这些问题,湖仓一体(Lakehouse)作为一种新兴的数据架构应运而生,逐渐成为各行业关注的焦点。湖仓一体结合了数据湖和数据仓库的优点,旨在提供一个统一的数据平台,既能存储多样化的原始数据,又能支持高效的数据分析和处理。湖仓一体架构通过将这两者的优势结合,打破了信息孤岛,实现了数据的统一管理和高效利用。
腾讯QQ大数据
2024/12/20
1740
Apache Amoro Meetup No.2:助力湖仓一体生产实践
Lakehouse 如何重塑企业数据生态?
大数据架构经过多年的演进,传统数据仓库和数据湖的局限性日益凸显。在此背景下,湖仓一体 Lakehouse 凭借其开放性和成本效益,迅速成为当今数据平台的主流架构。然而,随着进入 Data + AI 驱动的新时代,企业对实时数据分析的需求不断增加,对半结构化和非结构化数据的处理也愈显重要。那么,应该如何高效整合多种数据源,实现实时分析与智能决策?
深度学习与Python
2025/03/21
1520
Lakehouse 如何重塑企业数据生态?
Apache Paimon要赢了?湖仓一体实时化时代全面开启!
摘要:本文整理自阿里云开源大数据平台负责人王峰(莫问)老师在5月16日 Streaming Lakehouse Meetup · Online 上的分享,主要介绍在新一代湖仓架构上如何进行实时化大数据分析。内容主要分为以下五个部分:
王知无-import_bigdata
2024/06/17
4.8K1
Apache Paimon要赢了?湖仓一体实时化时代全面开启!
腾讯主导 Apache 开源项目: InLong(应龙)数据入湖原理分析
作为业界首个一站式、全场景海量数据集成框架,Apache InLong(应龙) 提供了自动、安全、可靠和高性能的数据传输能力,方便业务快速构建基于流式的数据分析、建模和应用。目前 InLong 正广泛应用于广告、支付、社交、游戏、人工智能等各个行业领域,服务上千个业务,其中高性能场景数据规模超百万亿条/天,高可靠场景数据规模超十万亿条/天。InLong 项目定位的核心关键词是“一站式”、“全场景”和“海量数据”。对于“一站式”,我们希望屏蔽技术细节、提供完整数据集成及配套服务,实现开箱即用;对于“全场景”,我们希望提供全方位的解决方案,覆盖大数据领域常见的数据集成场景;对于“海量数据”,我们希望通过架构上的数据链路分层、全组件可扩展、自带多集群管理等优势,在百万亿条/天的基础上,稳定支持更大规模的数据量。
腾讯技术工程官方号
2024/05/15
8680
腾讯主导 Apache 开源项目: InLong(应龙)数据入湖原理分析
浅谈大数据的过去、现在和未来
相信身处于大数据领域的读者多少都能感受到,大数据技术的应用场景正在发生影响深远的变化: 随着实时计算、Kubernetes 的崛起和 HTAP、流批一体的大趋势,之前相对独立的大数据技术正逐渐和传统的在线业务融合。关于该话题,笔者早已如鲠在喉,但因拖延症又犯迟迟没有动笔,最终借最近参加多项会议收获不少感悟的契机才能克服懒惰写下这片文章。
王知无-import_bigdata
2021/07/12
8050
八年孤独,Iceberg 赢得世界
一年以后,面对 Iceberg Summit 2025 座无虚席的会场,Ryan Blue 将会回想起与同事讨论 Iceberg 原型的那个遥远的下午。
深度学习与Python
2025/06/08
1670
八年孤独,Iceberg 赢得世界
Flink+StarRocks 实时数据分析实战
摘要:本文整理自 StarRocks 社区技术布道师谢寅,在 Flink Forward Asia 2022 实时湖仓的分享。本篇内容主要分为五个部分:
857技术社区
2023/07/26
1.6K0
Flink+StarRocks 实时数据分析实战
推荐阅读
相关推荐
腾讯 BiFang——业界首个生产级湖流一体解决方案
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 二、Ceph Rook 介绍
  • 三、通过 Rook 在 k8s 中部署 Ceph
    • 1)下载部署包
    • 2)部署 Rook Operator
    • 3)创建 Rook Ceph 集群
    • 4)部署 Rook Ceph 工具
    • 5)部署 Ceph Dashboard
    • 6)检查
    • 7)通过 ceph-tool 工具 pod 查看 ceph 集群状态
  • 四、 测试验证
    • 1) 块存储(RBD)测试
      • 1、创建 StorageClass
      • 2、部署 WordPress
    • 2)文件系统 (CephFS) 测试
      • 1、创建 StorageClass
      • 2、部署应用
    • 3)对象存储 (RGW) 测试
      • 1、创建对象存储
      • 2、创建对象存储 user
      • 3、获取 accesskey secretkey
      • 4、部署 rgw nodeport
      • 5、通过 api 接口使用 Ceph 对象存储
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档