作者 王成,腾讯云研发工程师,Kubernetes contributor,从事数据库产品容器化.资源管控等工作,关注 Kubernetes.Go.云原生领域. 概述 进入 K8s 的世界,会发现有很多方便扩展的 Interface,包括 CSI, CNI, CRI 等,将这些接口抽象出来,是为了更好的提供开放.扩展.规范等能力. K8s 持久化存储经历了从 in-tree Volume 到 CSI Plugin(out-of-tree) 的迁移,一方面是为了将 K8s 核心主干代码与 Volu…
redis持久化存储 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. 1.RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的状态数据保存到磁盘 触发机制: 手动执行save命令 或者配置触发条件 配置文件:s21_rdb.conf 配置核心参数: dbfilename s21redis.rdb save 900 1 daemonize yes…
参考文档: Github project:https://github.com/heketi/heketi MANAGING VOLUMES USING HEKETI:https://access.redhat.com/documentation/en-us/red_hat_gluster_storage/3.3/html/administration_guide/ch05s02 StorageClass:https://kubernetes.io/docs/concepts/storage/s…
1.PV和PVC的引入 Volume 提供了非常好的数据持久化方案,不过在可管理性上还有不足. 拿前面 AWS EBS 的例子来说,要使用 Volume,Pod 必须事先知道如下信息: 当前 Volume 来自 AWS EBS. EBS Volume 已经提前创建,并且知道确切的 volume-id. Pod 通常是由应用的开发人员维护,而 Volume 则通常是由存储系统的管理员维护.开发人员要获得上面的信息: 要么询问管理员. 要么自己就是管理员. 这样就带来一个管理上的问题:应用开发人员和…
作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 kubelet 重新拉起之后,如何保证之前容器产生的重要数据没有丢失? 场景二:如果同一个 pod 中的多个容器想要共享数据,应该如何去做? 以上两个场景,其实都可以借助 Volumes 来很好地解决,接下来首先看一下 Pod Volumes 的常见类型: 本地存储,常用的有 emptydir/ho…
作者 | 至天 阿里巴巴高级研发工程师 一.基本知识 存储快照产生背景 在使用存储时,为了提高数据操作的容错性,我们通常有需要对线上数据进行 snapshot ,以及能快速 restore 的能力.另外,当需要对线上数据进行快速的复制以及迁移等动作,如进行环境的复制.数据开发等功能时,都可以通过存储快照来满足需求,而 K8s 中通过 CSI Snapshotter controller 来实现存储快照的功能. 存储快照用户接口-Snapshot 我们知道,K8s 中通过 pvc 以及 pv 的设…
从一个例子入手PV.PVC Kubernetes 项目引入了一组叫作 Persistent Volume Claim(PVC)和 Persistent Volume(PV)的 API 对象用于管理存储卷. 简单的说PersistentVolume (PV) 是集群中已由管理员配置的一段网络存储,是持久化存储数据卷:Persistent Volume Claim(PVC)描述的,则是 Pod 所希望使用的持久化存储的属性,比如,Volume 存储的大小.可读写权限等等. 上面的这段文字说明可能过于…
环境: 系统 华为openEulerOS(CentOS7) k8s版本 1.17.3 master 192.168.1.244 node1 192.168.1.245 介绍: 在Kubernetes中,当Pod重建的时候,数据是会丢失的,Kubernetes也是通过数据卷挂载来提供Pod数据的持久化的.Kubernetes数据卷是对Docker数据卷的扩展,Kubernetes数据卷是Pod级别的,可以用来实现Pod中容器的文件共享. 部署: 安装nfs 两台节点都需要操作: yum insta…
StorageClass的作用: 创建pv时,先要创建各种固定大小的PV,而这些PV都是手动创建的,当业务量上来时,需要创建很多的PV,过程非常麻烦. 而且开发人员在申请PVC资源时,还不一定有匹配条件的PV可用,这又带来了新的问题. 于是Kubernetes提供了StorageClass来动态创建PV,StorageClass大大简化了PV的创建过程. 当申请PVC资源时, 如果匹配到满足条件的StorageClass,还会自动为PVC创建对应大小的 PV并进行绑定. 下面就来仔细讲讲现在如何…
一.集群和组件版本 K8S集群:1.17.3+Ceph集群:Nautilus(stables)Ceph-CSI:release-v3.1snapshotter-controller:release-2.1Linue kernel:3.10.0-1127.19.1.el7.x86_64 + 镜像版本: docker pull quay.io/k8scsi/csi-snapshotter:v2.1.1docker pull quay.io/k8scsi/csi-snapshotter:v2.1.0d…