面向Kubernetes的开源云原生存储通常是指支持Kubernetes本地对象存储API的存储解决方案,以满足容器化应用程序的存储需求。这些解决方案可以使用Kubernetes内置的存储资源对象,例如PV(Persistent Volume)和PVC(Persistent Volume Claim),这使得管理存储资源变得更加容易和标准化。
本文详细介绍了如何在 Kubernetes 集群中部署 ceph-csi(v3.1.0),并使用 RBD 作为持久化存储。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/79120095
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/78999851
最近我在kubernetes中使用了ceph的rbd及cephfs存储卷,遇到了一些问题,并逐一解决了,在这里记录一下。
在上期 《云存储硬核技术内幕——(30) 七位数年终奖背后的故事》中,我们讲了一个“找到抓手,洞悉痛点,抽离底层逻辑,选择赛道,拉通资源,有效对焦,形成闭环,复刻商业模式”的故事。
在 Rook 中,块存储有两种存储类型:副本存储和纠删码存储。这两种存储类型都可以在 Kubernetes 集群中使用,可以通过在 CephBlockPool 中指定不同的存储类别来实现。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/79056864
使用容器编排工具如Kubernetes可以实现Ceph集群的高可用性和自动化管理,具体步骤如下:
可参考:https://kubernetes.io/zh-cn/docs/concepts/overview/kubernetes-api/
MySQL 在 Kubernetes 环境中运行这件事情本身并不困难,最简单的方式就是找到 MySQL 的 Docker image,跑起来就行了,但是要做到生产环境可用,还是有几个问题要解决,所以本文不对整个流程做详细的描述,而是把重点放在几个难点上。
本来想使用ceph-fuse,结果一直在报mount can't read super block的错误,但是我只给主机安装了ceph-fuse的rpm包,kublet居然在使用内核的挂载方式挂载cephfs,这简直是不能再有的错误,可是如何指定kubelet来使用ceph-fuse来进行cephfs的挂载呢,我google了一大圈,都没人讲这个小问题。 后来实在无奈,直接翻了源码: kubernetes/pkg/volume/cephfs/cephfs.go
Rook是一个开源的云原生存储解决方案,它在Kubernetes集群中提供了一种可扩展的、基于容器的分布式存储系统。Rook的主要目标是简化存储的部署、管理和扩展,同时提供可靠性和性能。它支持多种存储后端,包括Ceph、EdgeFS、MinIO等,同时还提供了各种功能,如快照、复制、容错等。
所有的k8s节点的node节点要能访问到ceph的服务端,所以所有的node节点要安装客户端(ceph-common),我上面是直接安装ceph,也是可以的。
一、安装 1.1、创建operator # 安装 git clone --single-branch --branch v1.8.7 https://github.com/rook/rook.git cd rook/deploy/examples kubectl create -f crds.yaml -f common.yaml # 修改配置 vim operator.yaml # 自动发现开启 ROOK_ENABLE_DISCOVERY_DAEMON: "true" # 镜像 # 国外
Rook 官网:https://rook.io 容器的持久化存储 容器的持久化存储是保存容器存储状态的重要手段,存储插件会在容器里挂载一个基于网络或者其他机制的远程数据卷,使得在容器里创建的文件,实际上是保存在远程存储服务器上,或者以分布式的方式保存在多个节点上,而与当前宿主机没有任何绑定关系。这样,无论你在其他哪个宿主机上启动新的容器,都可以请求挂载指定的持久化存储卷,从而访问到数据卷里保存的内容。 由于 Kubernetes 本身的松耦合设计,绝大多数存储项目,比如 Ceph、GlusterFS、NFS 等,都可以为 Kubernetes 提供持久化存储能力。 Ceph 分布式存储系统 Ceph 是一种高度可扩展的分布式存储解决方案,提供对象、文件和块存储。在每个存储节点上,您将找到 Ceph 存储对象的文件系统和 Ceph OSD(对象存储守护程序)进程。在 Ceph 集群上,您还可以找到 Ceph MON(监控)守护程序,它们确保 Ceph 集群保持高可用性。 Rook Rook 是一个开源的 cloud-native storage 编排, 提供平台和框架;为各种存储解决方案提供平台、框架和支持,以便与云原生环境本地集成。 Rook 将存储软件转变为自我管理、自我扩展和自我修复的存储服务,它通过自动化部署、引导、配置、置备、扩展、升级、迁移、灾难恢复、监控和资源管理来实现此目的。 Rook 使用底层云本机容器管理、调度和编排平台提供的工具来实现它自身的功能。 Rook 目前支持 Ceph、NFS、Minio Object Store 和 CockroachDB。
在系列文章的第三篇中,讲到了如何使用 PV 和 PVC 挂载 RBD 上建立好的块存储镜像,但这还是不足以满足 cloud native 环境下的需求,试想如果部署一个应用,需要申请十个 RBD images,PV 和 PVC 的方式下,就需要先手动在 ceph 集群上部署十个 image,这在实际操作时,是完全不可接受的,就算用 Webhook 机制调用脚本自动执行,也会存在一些问题,比如何时释放 RBD image,而且这样也增加了系统的复杂度,更易出错,所以最好是有 Kubernetes 的原生的解决方案。而 Kubernetes 确实提供这样的解决方案,就是本文要谈到的 StorageClass。
在容器世界中,无状态是一个核心原则,然而我们始终需要保存数据,并提供给他人进行访问。所以就需要一个方案用于保持数据,以备重启之需。
我想在新的Kubernetes集群上安装Prometheus和Grafana,但为了使这些软件包能够工作,他们需要一些地方来存储持久数据。当我在Seagate担任云架构师时,我已经对Ceph进行了性能和规模测试,并且在过去的一年里玩过Rook,所以我决定安装Rook+Ceph,并将其用于Kubernetes集群的数据存储。
Ceph是一种高度可扩展的分布式存储解决方案,提供对象、文件和块存储。在每个存储节点上,将找到Ceph存储对象的文件系统和Ceph OSD(对象存储守护程序)进程。在Ceph集群上,还存在Ceph MON(监控)守护程序,它们确保Ceph集群保持高可用性。
MySQL 中的数据是关键信息,是有状态的,不可能随着 MySQL pod 的销毁而被销毁,所以数据必须要外接到一个可靠的存储系统中,目前已经有了 Ceph 系统,所以这里就只考虑如何将 Ceph 作为外部存储的情况,毕竟没有条件去尝试其他存储方案。
镜像: rook/ceph:v1.6.3 换成 registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/rook-ceph:v1.6.3
今年夏天,我很幸运地被欧洲核子研究中心(CERN)录取为实习生。作为CERN openlab的暑期学生,我在IT存储组工作了9周,我的暑期项目是“评估使用Rook部署Ceph”。我之前在Ceph实习的时候有过一段很棒的经历,所以这次我也非常兴奋。
jx是云原生CICD,devops的一个最佳实践之一,目前在快速的发展成熟中。最近调研了JX,这里为第3篇,介绍下如何安装jenkins x。
管理存储是管理计算的一个明显问题。PersistentVolume子系统为用户和管理员提供了一个API,用于抽象如何根据消费方式提供存储的详细信息。于是引入了两个新的API资源:PersistentVolume和PersistentVolumeClaim
Rook 是专用于 Cloud-Native 环境的文件、块、对象存储服务。它实现了一个自动管理的、自动扩容的、自动修复的分布式存储服务。Rook 支持自动部署、启动、配置、分配、扩容/缩容、升级、迁移、灾难恢复、监控以及资源管理。为了实现所有这些功能,Rook 需要依赖底层的容器编排平台,例如 kubernetes、CoreOS 等。Rook 目前支持 Ceph、NFS、Minio Object Store、Edegefs、Cassandra、CockroachDB 存储的搭建,后期会支持更多存储方案。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/86215080
Alex,专注于云计算领域数年,目前主要从事容器云平台的建设,推进各类基础设施服务的云原生化。
在cluster/examples/kubernetes 目录下,官方给了个worldpress的例子,可以直接运行一下:
注意:这里key后面对应的只是一个例子,实际配置中要以运行命令后产生的结果为准 这里的key使用user的key,后面配置中是需要用到的 如果是ceph luminous版本的集群,那么命令应该是ceph auth get-or-create client.kubernetes mon 'allow r' osd 'allow rwx pool=kubernetes' -o ceph.client.kubernetes.keyring
接近年底了,上游各个项目都在积极发布今年的最后一个版本,争取兑现年初立下的 flag。我们来看看最近有哪些值得关注的内容。
1、安装客户端(客户端版本与ceph集群的版本最好一致,不然创建image的时候死活创建不了):
本文章介绍如何使用ceph为k8s提供动态申请pv的功能。ceph提供底层存储功能,cephfs方式支持k8s的pv的3种访问模式ReadWriteOnce,ReadOnlyMany ,ReadWriteMany ,RBD支持ReadWriteOnce,ReadOnlyMany两种模式
Rook 是一个开源 cloud-native storage orchestrator(云原生存储编排器),为各种存储解决方案提供平台、框架和支持,以与云原生环境进行原生集成。
k8s是通过kube-apiserver组件将数据存储在etcd中,这些数据通常会通过protobuf或者json序列化后进行存储,而有的资源则需要进行加密存储,比如Secret。本文就以Secret资源为例,手把手教你如何解密K8s集群的加密资源。
修改Rook CSI镜像地址,原本的地址可能是gcr的镜像,但是gcr的镜像无法被国内访问,所以需要同步gcr的镜像到阿里云镜像仓库,本文档已经为大家完成同步,可以直接修改如下:
Ceph CSI 3.0.0 发布了!这次更新带来了很多重要的功能,比如为存储块服务 RBD 提供快照创建和删除的功能,以及从快照中创建持久卷等。那么这些新功能对我们云原生应用开发和部署有什么意义呢?如果大家不了解 Ceph CSI,我这里先简单介绍一下:
Rook 是基于 Kubernetes 之上构建的存储服务框架。它支持 Ceph、NFS 等多种底层存储的创建和管理。帮助系统管理员自动化维护存储的整个生命周期。存储的整个生命周期包括部署、启动、配置、申请、扩展、升级、迁移、灾难恢复、监控和资源管理等,看着就让笔者觉得事情不少,Rook 的目标就是降低运维的难度,让 Kubernetes 和 Rook 来帮你托管解决这些任务。
本篇是client-go源码分析的第一篇,client-go是从事Kubernetes开发必研究的项目,client-go之所以重要,主要在以下几个方面:
可参考:https://kubernetes.io/zh-cn/docs/reference/using-api/client-libraries/
First thing first,Rook is not a CSI driver. —— 首先,Rook不是一个容器存储驱动。
https://blog.fleeto.us/post/kubernetes-storage-performance-comparison/
RADOS: Reliable, Autonomic Distributed Object Store
如果你正在运行 Kubernetes,你可能正在使用,或者准备使用动态供给的块存储卷,而首当其冲的问题就是为集群选择合适的存储技术。这个事情并不能用一个简单的测试来做出简单的回答,告诉你目前市面上最好的技术是什么。存储技术的选择过程中,集群上运行的负载类型是一个重要的输入。对于裸金属集群来说,需要根据实际用例进行选择,并集成到自己的硬件之中。公有云中的托管 K8s,例如 AKS、EKS 或者 GKE,都具有开箱可用的块存储能力,然而这也不见得就是最好的选择。有很多因素需要考虑,比如说公有云的 StorageClass 的故障转移时间太长。例如在 一个针对 AWS EBS 的故障测试中,加载了卷的 Pod 用了超过五分钟才成功的在另一个节点上启动。Portworx 或者 OpenEBS 这样的云原生存储产品,正在尝试解决这类问题。
作者 | 褚杏娟 当地时间 10 月 4 日,IBM 发文宣布,Red Hat 正在将其存储产品组合和相关团队(包括 Red Hat Ceph Storage、Red Hat OpenShift Data Foundation (ODF)、Rook 和 NooBaa)转移到 IBM 旗下。之后,ODF 将成为 IBM 在 2015 年推出的存储软件品牌 Spectrum Fusion 的基础。 ODF 是基于 Ceph、Noobaa 和 Rook 软件组件的云原生存储、数据管理和数据保护组合。其中,Cep
最近 CNCF 宣布 rook 毕业,kubeSphere 正好也发布了 3.0.0 版本,由于 rancher 开源的 longhorn 还处于孵化阶段,不太适合生产环境使用,这次使用 rook 作为 kubeSphere 底层存储快速搭建一个生产可用的容器平台。
最近几年,我的工作内容始终围绕着客户 Kubernetes 集群的建设。如何为客户的 Kubernetes 集群选择一款稳定可靠、性能表现优异的存储解决方案,这样的问题一直困扰着我。
之前介绍了 RBD 的使用方法,有了 RBD,远程磁盘挂载的问题就解决了,但 RBD 的问题是不能多个主机共享一个磁盘,如果有一份数据很多客户端都要读写该怎么办呢?这时 CephFS 作为文件系统存储解决方案就派上用场了。
领取专属 10元无门槛券
手把手带您无忧上云