云原生之深入解析K8S中Ceph的部署与功能测试

news2025/2/3 4:54:11

一、前言

  • Ceph 在 k8s 中用做共享存储还是非常方便的,Ceph 是比较老牌的分布式存储系统,非常成熟并且功能也强大,支持三种模式(快存储、文件系统存储、对象存储),那么如何在 k8s 使用 ceph 呢?
  • k8s 环境的部署,请参考:云原生之深入解析K8S 1.24的高可用环境部署。
  • 关于 Ceph 的环境部署和实战操作,请参考:云原生之深入解析分布式存储系统Ceph的环境部署和实战操作。

二、Ceph Rook 简介

  • Rook 是一个开源的云原生存储编排工具,提供平台、框架和对各种存储解决方案的支持,以和云原生环境进行本地集成。Rook 将存储软件转变成自我管理、自我扩展和自我修复的存储服务,通过自动化部署、启动、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 底层使用云原生容器管理、调度和编排平台提供的能力来提供这些功能。
  • Rook 利用扩展功能将其深度地集成到云原生环境中,并为调度、生命周期管理、资源管理、安全性、监控等提供了无缝的体验,Rook 目前支持 Ceph、NFS、Minio Object Store 和 CockroachDB。

在这里插入图片描述

  • Rook 官网;
  • Rook Git 地址。

三、通过 Rook 在 k8s 中部署 Ceph

① 下载部署包

  • 命令如下:
git clone --single-branch --branch v1.10.8 https://github.com/rook/rook.git
  • 部署所用到的镜像如下:

在这里插入图片描述

  • 由于镜像源在国外,国内无法下载,这里需要修改一些镜像或者提前下载 tag,操作如下:
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

② 部署 Rook Operator

cd rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
# 检查
kubectl -n rook-ceph get pod
  • 也可以通过 helm 部署:
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

③ 创建 Rook Ceph 集群

  • 现在 Rook Operator 处于 Running 状态,接下来就可以创建 Ceph 集群,为了使集群在重启后不受影响,请确保设置的 dataDirHostPath 属性值为有效得主机路径:
cd rook/deploy/examples
kubectl apply -f cluster.yaml

④ 部署 Rook Ceph 工具

cd rook/deploy/examples
kubectl create -f toolbox.yaml

⑤ 部署 Ceph Dashboard

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 集群状态:
# 查看对外端口
kubectl get svc -n rook-ceph

在这里插入图片描述

⑥ 检查

kubectl get pods,svc -n rook-ceph

在这里插入图片描述

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

kubectl exec -it `kubectl get pods -n rook-ceph|grep rook-ceph-tools|awk '{print $1}'` -n rook-ceph -- bash

ceph -s

在这里插入图片描述

四、测试验证

① 块存储(RBD)测试

  • 创建 StorageClass:
cd rook/deploy/examples
# 创建一个名为replicapool的rbd pool
kubectl apply -f csi/rbd/storageclass.yaml

在这里插入图片描述

  • 部署 WordPress:
kubectl apply -f mysql.yaml
kubectl apply -f wordpress.yaml

② 文件系统 (CephFS) 测试

  • 创建 StorageClass:
kubectl apply -f csi/cephfs/storageclass.yaml
  • 部署应用:
kubectl apply -f filesystem.yaml

③ 对象存储 (RGW) 测试

  • 创建对象存储:
kubectl create -f object.yaml

# 验证rgw pod正常运行
kubectl -n rook-ceph get pod -l app=rook-ceph-rgw
  • 创建对象存储 user:
kubectl create -f object-user.yaml
  • 获取 accesskey secretkey:
# 获取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
  • 部署 rgw nodeport:
kubectl apply -f rgw-external.yaml

kubectl -n rook-ceph get service rook-ceph-rgw-my-store rook-ceph-rgw-my-store-external
  • 通过 api 接口使用 Ceph 对象存储:
#首先,需要安装 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,
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762301.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

横向滚动日期显示对应周几

common.js: //获取当前时间&#xff0c;格式YYYY-MM-DD HH:MM:SS const GetNowTime time > {var date time,year date.getFullYear(),month date.getMonth() 1,day date.getDate(),hour date.getHours() < 10 ? "0" date.getHours() : date.getHours…

前端学习——ajax (Day1)

AJAX 概念和 axios 使用 axios 使用 练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

docker-compose安装redis高可用哨兵集群(一主二从三哨兵)

以redis 7.0为例子 直接上代码 docker-compose.yaml version: 3.3 services:master:image: redis:7.0container_name: redis-master#restart: alwayscommand: redis-server --port 6379 --requirepass root --appendonly yes --masterauth root --replica-announce-ip 192.1…

什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议

在计算机网络中&#xff0c;TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;是两种最常用的传输层协议。它们都用于在网络上传输数据&#xff0c;但是它们之间有很多不同之处。本文将介绍TCP和UDP的基本概念&#xff0c;以及在Java中如何…

一、基础-4、MySQL启动和客户端连接

一、启动 方法一&#xff1a; 1、winR&#xff0c;输入services.msc&#xff0c;按回车 2、找到MySQL&#xff0c;右键-启动/停止 MySQL安装后&#xff0c;默认已启动。 方法二、 1、winR&#xff0c;输入cmd&#xff0c;打开命令行 2、输入启动与停止命令 二、客户端连接 …

港联证券-“肉签”频出!这周打新看TA们→

近期&#xff0c;新股市场有所回暖&#xff0c;“赚钱效应”随之提高。Choice数据显现&#xff0c;上星期8只新股的上市首日均匀涨幅为56%&#xff0c;呈逐周上涨态势。其中&#xff0c;赛维年代首日大涨115.11%&#xff0c;中一签约可赚1.2万元&#xff1b;昊帆生物、英华特、…

ShardingSphere项目实战集群环境准备

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…

React06-简单实战案例

一、计时器 1. 案例场景 计时器在很多网站中都有使用&#xff0c;以时分秒的格式展示当前时间&#xff0c;每秒刷新一次。 2. 案例展示 展示的时间将随着系统时间&#xff0c;每秒刷新一次。 3. 案例代码 import { useState, useEffect } from react;export default func…

golang中的【数组】相关知识点

目录 数组含义数组定义形式数组的声明初始化方式数组变量的类型 arr的特征数组的遍历遍历的用法二数组的值传递数组的引用&取地址 传送二维数组的相关操作定义二维数组初始化遍历 Golang是一种高效的编程语言&#xff0c;具有很多特性和优点&#xff0c;其中之一就是其对数…

查看服务器GPU使用情况,以及使用GPU的用户

查看服务器GPU使用情况&#xff0c;以及使用GPU的用户 1.查看gpu使用情况 nvidia-smi2.查看是谁在占用gpu ps -f -p PID例如 ps -f -p 1986875就可以看到是谁在用了

谷歌发布ALBERT V2和中文模型

2019年9月推出时&#xff0c;谷歌的ALBERT语言模型在GLUE、RACE和SQuAD 2.0等流行的自然语言理解&#xff08;NLU&#xff09;基准上取得了SOTA结果。谷歌现在发布了一个主要的V2 ALBERT更新和开源的中国ALBERT模型。 正如全名“A Lite BERT”所示&#xff0c;ALBERT是该公司B…

组件的状态

组件的状态 react hook出来之前&#xff0c;函数式组件是没有自己状态的。 ​ jsx 就和原生js编写差不多&#xff0c;所有就当作在定义类&#xff0c;在类方法中使用变量&#xff0c;就要通过this来调用。 ​ 主义要写在state中&#xff0c;数据驱动视图&#xff0c;我们想要修…

Vite 3.0 核心盘点与分析

自2021 年2月&#xff0c;Vite 2.0版本发布以来&#xff0c;Vite项目在的用户量方面发生了非常迅速的增长&#xff0c;很快达到了每周 100 万的npm下载量&#xff0c;成为npm下载量最高的几个项目之一。同时&#xff0c;Vite 的社区也越来越活跃&#xff0c;目前已经形成非常庞…

如何用手机实现三维可视化

三维可视化是一种强大的工具&#xff0c;可以将复杂的数据、概念或场景以直观、具体的形式展现出来。它将数据或模型转化成三维图像&#xff0c;使人们能够更清晰地理解和分析其中的关系和特征。三维可视化不仅可以用于科学研究和工程设计&#xff0c;还广泛应用于教育、娱乐和…

linux内核调试工具记录

Linux性能测试使用的工具在github网站可见&#xff0c;网址如下&#xff1a; slides: http://www.slideshare.net/brendangregg/linux-performance-analysis-new-tools-and-old-secrets video: https://www.usenix.org/conference/lisa14/conference-program/presentation/greg…

在线考试系统源码搭建:springboot+mybatis+mysql+vue

下载源码 在线考试 刷题小程序 题库答题小程序 : 适用机构场景&#xff1a;在线考试系统适用于企业考核、员工职评测、培训机构考证刷题等场景&#xff1b;用户端功能&#xff1a;顺序练习&#xff0c;真题模拟&#xff0c;我的错题&#xff0c;我的收藏、错题重练(答对自动移…

【Atcoder】 [ARC156C] Tree and LCS

题目链接 Luogu方向 Atcoder方向 题目解法 手玩几个小数据之后可以猜测最小的最大相似度一定为1 考虑构造&#xff1a;每次找到2个叶子&#xff0c;交换权值&#xff0c;然后删掉&#xff08;最后如果剩下一个点权值不变&#xff09; 证明&#xff1a; 首先可以证明最大的相…

【微服务实战之Docker容器】第三章-镜像仓库

系列文章目录 【微服务实战之Docker容器】第一章-下载及安装 文章目录 系列文章目录Docker镜像提交本地镜像发布到阿里云阿里云镜像下载到本地使用本地镜像发布到私有库 Docker镜像提交 docker commit提交容器副本使之成为一个新的镜像docker commit -m“提交的描述信息” -a…

2023年网络安全需把握十大趋势

过去的2022年&#xff0c;网络安全继续成为全社会的关注焦点。网络战在俄乌冲突中风头尽出&#xff1b;勒索攻击给企业造成的损失触目惊心&#xff1b;数据泄露事件愈发频繁、甚至威胁社会安全&#xff1b;供应链攻击无处不在……网络安全已经成为发展的先决条件。 2023年是贯…

【大模型】AutoDL 快速使用

网站&#xff1a;https://www.autodl.com/ BUY 性价比之选&#xff1a;NVIDIA RTX A5000 / 24GB PS&#xff1a;CUDA版本 -12.0 PS&#xff1a;Pytorch/2.0.0/3.8(ubuntu20.04)/11.8 Use Tips git clone 慢 学术资源加速 source /etc/network_turbo切换pip 阿里源