StorageClass是一个Kubernetes资源对象,允许用户定义不同类型的存储资源,以及它们如何分配给应用程序。 StorageClass可以用来定义存储的种类、属性、访问模式等。 一个StorageClass对象定义了一系列参数,用于描述如何分配存储资源。其中最重要的参数是provisioner和parameters。 在使用StorageClass之前,需要确定所需的存储类型和容量,并选择适当的provisioner。 storageClassName字段指定使用的StorageClass对象名称。 创建的PersistentVolume将符合StorageClass定义的参数,例如容量、介质等。
这个默认的 StorageClass 以后将被用于动态的为没有特定存储类需求的 PersistentVolumeClaims 配置存储 预先安装的默认 StorageClass 可能不能很好的适应你期望的工作负载 如果是这样的话,你可以改变默认 StorageClass,或者完全禁用它以防止动态配置存储 , 删除默认 StorageClass 可能行不通,因为它可能会被你集群中的扩展管理器自动重建 改变默认 StorageClass 2,标记默认 StorageClass 非默认: 默认 StorageClass 的注解 storageclass.beta.kubernetes.io/is-default-class ":{"storageclass.beta.kubernetes.io/is-default-class":"false"}}}' 3, 标记一个 StorageClass 为默认的: kubectl ": "true"}}}' 4,验证你选用的 StorageClass 为默认的: kubectl get storageclass image.png
在 k8s 环境,当pod需要存储空间时,StorageClass 比 PV 更灵活和方便。 ,所有需要 PVC 通过该 StorageClass 即可获得存储空间 创建 StorageClass 创建或选取一个 Namespace 用于运行 nfs 相关的 pod。 配置默认 StorageClass 列出集群中的 StorageClass kubectl get storageclass NAME PROVISIONER 非默认: kubectl patch storageclass standard -p '{"metadata": {"annotations":{"storageclass.kubernetes.io /is-default-class":"false"}}}' 标记一个 StorageClass 为默认: kubectl patch storageclass <your-class-name> -p
三、StorageClass(存储类)3.1 StorageClass 概念StorageClass(存储类)用于动态提供存储资源。 用户在 PVC 中指定 StorageClass,从而动态创建和绑定 PV。 3.2 StorageClass 特点动态创建:StorageClass 允许根据用户需求动态创建 PV,简化了存储资源的管理和使用。 3.3 StorageClass 配置示例以下是一个 StorageClass 的 YAML 文件示例:apiVersion: storage.k8s.io/v1kind: StorageClassmetadata 工作流程如下:创建 StorageClass:管理员创建 StorageClass,定义存储提供者和存储参数等。提交 PVC:用户提交 PVC,指定 StorageClass 和存储需求。
为了满足这类需求,就有了 存储类(StorageClass) 资源。 动态制备的卷会继承其 StorageClass 中设置的回收策略, 该策略默认为 Delete。 ---- StorageClass StorageClass 为管理员提供了描述存储 “类” 的方法。 不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。 StorageClass 对象的命名很重要,用户使用这个命名来请求生成一个特定的类。 当创建 StorageClass 对象时,管理员设置 StorageClass 对象的命名和其他参数,一旦创建了对象就不能再对其更新。
一 StoragClass 1.1 StorageClass概述 StorageClass作为对存储资源的抽象定义,对用户设置的PVC申请屏蔽后端存储的细节,一方面减少了用户对于存储资源细节的关注,另一方面减轻了管理员手工管理 基于StorageClass的动态资源供应模式将逐步成为云平台的标准存储配置模式。StorageClass的定义主要包括名称、后端存储的提供者(provisioner)和后端存储的相关参数配置。 StorageClass一旦被创建出来,则将无法修改。如需更改,则只能删除原StorageClass的定义重建。 gidMin和gidMax:StorageClass的GID范围,用于动态资源供应时为PV设置的GID。 1.4 设置默认StorageClass 要在系统中设置一个默认的StorageClass,则首先需要启用名为DefaultStorageClass的admission controller,即在kube-apiserver
该PVC使用名为“csi-sc”的StorageClass来指定存储策略和参数。volumeMode指定了PVC所请求的卷的模式,它可以是Filesystem或Block。 总结Kubernetes StorageClass和CSI是管理和使用存储解决方案的重要组件。 StorageClass允许管理员为不同类型的存储提供商定义不同的策略和参数,同时也允许用户通过PVC请求特定类型的存储。 通过使用StorageClass和CSI,管理员可以轻松地将不同类型的存储集成到Kubernetes集群中,并提供一种通用的方法来管理它们。
介绍在Kubernetes中,StorageClass是一种定义动态存储卷的方法。 StorageClass在Kubernetes中,StorageClass是一种定义动态存储卷的方法。 StorageClass可以通过yaml文件进行定义。 一旦定义了StorageClass,用户就可以通过PVC来请求存储。 该PVC使用“fast”StorageClass来指定存储策略和参数。
我们上一小节介绍了StorageClass的基本逻辑,本小节将介绍一个真实的案例使用最容易获取的nfs作为服务端来提供存储。 1.准备NFS 这里的nfs是我已经提前搭建的好的nfs服务端。 4.创建StorageClass apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-storage provisioner : my-nfs-provisioner 创建一个StorageClass,使用刚才的创建的Pod,通过它来完成NFS相关资源的创建删除回收并且提供给PVC调用。 这样业务方可根据自己的业务需求创建PVC,来申请对应的资源,并不需要手工去处理PVC和PV的绑定关系,这个操作会由StorageClass直接完成。 当然如果你的业务比较简单,也可用直接在Pod里面引用NFS,而不经过PV,PVC,StorageClass这一系列操作。
StorageClass(示例) apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fast provisioner: 替代:检查 StorageClass 与 PV 供给。 坑:权限不匹配。替代:fsGroup 设置权限。 下一篇预告 K8s 滚动更新与回滚:部署策略与命令清单。
关于StorageClass 在K8S环境,当pod需要存储空间时,StorageClass比PV更灵活和方便,官方文档地址:https://kubernetes.io/docs/concepts/storage 本次实战 本次实战的目标是快速创建NFS类型的StorageClass,并验证该StorageClass正常可用,全文由以下部分组成: 创建StorageClass; 通过helm下载tomcat的chart ; 修改chart,让tomcat使用刚才创建的StorageClass; 在NFS服务端检查文件夹已正常写入; 环境信息和准备工作 以下是创建StorageClass必备的环境信息: Kubernetes 把创建StorageClass要做的的事情理清楚: 创建namespace,这里用hello-storageclass(您也可以选用自己喜欢的); 创建rbac:因为StorageClass有对应的pod ,所有需要PVC通过该StorageClass即可获得存储空间; 接下来请SSH登录kubernetes环境,按照上述步骤操作; 创建StorageClass 创建namespace:kubectl create
PV 和 PVC,但 PV 和 PVC 都是需要手动创建的话会很麻烦,特别是当有 StatefulSet 应用存在的时候,如果你需要手动对每个 pod 都创建一个 PVC 和 PV 就非常麻烦,于是 StorageClass 或其他存储,这里我以 nfs 为例进行部署 我们先来梳理一下思路和几个需要的东西: nfs 是我们最终的存储 nfs-client 是用来动态创建 pv 和 pvc 的,我们称为 provisioner StorageClass nfs-client-root nfs: server: 172.16.1.1 path: /kubernetes/test 创建StorageClass 最后创建我们需要的 StorageClass 就可以了 apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-nfs-storage ReadWriteMany resources: requests: storage: 1Mi storageClassName: my-nfs-storage statefulset 使用 StorageClass
PVC,找到对应的StorageClass,然后Kubernetes就会调用 StorageClass声明的存储插件,创建出需要的PV。 nfs-client-storageclass.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-client-storageclass 创建这个YAML文件: [root@master storageclass]# kubectl apply -f nfs-client-storageclass.yaml storageclass.storage.k8s.io /nfs-client-storageclass created [root@master storageclass]# kubectl get storageclass NAME 就是我们创建的nfs-client-storageclass。
我们在前面介绍kubernetes的PV&PVC的时候,通过手工创建PV和PVC时候,这个操作太麻烦而且没有不能自动化,今天我们要介绍的一个资源:StorageClass(简称sc)就是kubernetes StorageClass介绍 在Kubernetes中,SC(StorageClass)是用于定义动态存储的一种资源类型。 创建StorageClass apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-storage provisioner
目前TKE的StorageClas 支持qcloud-cbs(云硬盘)类型的,还没有支持到cfs(nfs文件存储 ),本教程通过创建相关配置文件达到StorageClass分配nfs动态卷。 4.创建storageclass kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: nfs provisioner: example.com/nfs [cwrlz9wrrw.png] 5.创建测试claim 接下来要创建测试的claim,以检测StorageClass能否正常工作: 编写并创建test-claim.yaml 如下,注意storageClassName应确保与上面创建的StorageClass名称一致。 get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS
如果存在默认的StorageClass,则系统将自动为PVC创建一个PV(使用默认StorageClass的后端存储),并将它们进行绑定。 集群管理员设置默认StorageClass的方法为,在StorageClass的定义中加上一个annotation“storageclass.kubernetes.io/is-default-class StorageClass StorageClass作为对存储资源的抽象定义,对用户设置的PVC申请屏蔽后端存储的细节,一方面减少了用户对存储资源细节的关注,另一方面减少了管理员手工管理PV的工作,由系统自动完成 StorageClass的定义主要包括名称、后端存储的提供者(privisioner)和后端存储的相关参数配置。StorageClass一旦被创建,就无法修改,如需修改,只能删除重建。 ,DefaultStorageClass 然后,在StorageClass的定义中设置一个annotation: apiVersion: storage.k8s.io/v1 kind: StorageClass
在原生的 Kubernetes 集群中,通过 StorageClass 创建的 PVC 是无法修改存储后端的,需要将 PV、PVC 删除后通过新的 StorageClass 创建新的 PVC,然后再将数据迁移 而 Rainbond 虽然也是通过 StorageClass 创建的 PVC,但相比原生 Kubernetes 省去了创建 PV、PVC 和重新挂载的步骤,以及重复性的操作。 kubectl edit rainbondvolumes -n rbd-systemspec: storageClassName: nfs-client删除 Rainbond 基于默认 NFS 创建的 StorageClass
如果您有其他想要了解的,欢迎私信联系我~ 基本介绍 在 Kubernetes 中,StorageClass(存储类,SC)是一种与存储相关、用于定义存储卷驱动器的资源对象,并可以根据 PVC 对象的申请动态创建 、WaitForFirstConsumer) 存储卷扩展策略 存储卷的回收策略 工作原理 定义对象:管理员可以在 Kubernetes 集群中定义一个或多个 StorageClass 对象 动态卷供应: 当用户创建 PVC 对象时,如果 PVC 指定了 StorageClass 的名称,Kubernetes 会自动使用相应的 StorageClass 来动态创建一个 PV 对象 驱动器插件:StorageClass 指定一个驱动器插件,它是一个外部服务,负责创建、删除、扩展和回收卷,如 nfs-client-provisioner 存储卷绑定:Kubernetes 会根据 StorageClass 定义的绑定模式 资源清单(示例) --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-nfs-storage
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS # 通过StorageClass配置NFS Provisioner k8s中每一类的存储设备都有相应的Provisioner,这里我们使用的是NFS Provisioner(https://github.com apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-client provisioner: k8s-sigs.io [root@k8s-worker1 zwf]# kubectl apply -f pvc_dyn.yaml -n zwf storageclass.storage.k8s.io/nfs-client-retained zwf NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS
、软件准备 Kubernetes 使用 RBD 作为 StorageClass 1、Kubernetes StorageClass 介绍 Kubernetes 集群存储 PV 支持 Static 静态配置以及 通过动态卷配置,能自动化完成以上两步骤,它无须集群管理员预先配置存储资源,而是使用 StorageClass 对象指定的供应商来动态配置存储资源。 3、Kubernetes 使用 RBD 作为 StorageClass StorageClass 对象支持多种类型的存储卷插件来提供 PV,从 Storage Classes 官方文档 provisioner $ kubectl create -f rbd-storage-class.yaml storageclass "rbd" created $ kubectl get storageclass NAME 可以看到 STORAGECLASS 字段显示的 rbd 即为上边创建的 rbd storageClass。接下来,我们来创建一个挂载该 PVC 的 Pod,看能否挂载成功吧!