改变默认存储类

1 改变默认 StorageClass

本文展示了如何改变默认的 Storage Class,它用于为没有特殊需求的 PersistentVolumeClaims 配置 volumes.

1.1 为什么要改变默认存储类?

取决于安装模式,你的 Kubernetes 集群可能和一个被标记为默认的已有 StorageClass 一起部署。 这个默认的 StorageClass 以后将被用于动态的为没有特定存储类需求的 PersistentVolumeClaims 配置存储。更多细节请查看 PersistentVolumeClaim 文档。

预先安装的默认 StorageClass 可能不能很好的适应你期望的工作负载;例如,它配置的存储可能太过昂贵。 如果是这样的话,你可以改变默认 StorageClass,或者完全禁用它以防止动态配置存储。

删除默认 StorageClass 可能行不通,因为它可能会被你集群中的扩展管理器自动重建。 请查阅你的安装文档中关于扩展管理器的细节,以及如何禁用单个扩展。

1.2 改变默认存储类

  1. 列出集群中的 storageclasses:
[shutang@lona-001 mysql-cluster]$ kubectl get sc
NAME                            PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
longhorn                        driver.longhorn.io   Delete          Immediate           true                   7h15m
managed-nfs-storage (default)   fuseim.pri/ifs       Retain          Immediate           false                  27d
  1. 标记默认 StorageClass 为非默认
    默认 StorageClass 的注解 storageclass.kubernetes.io/is-default-class 设置为 true。 注解的其它任意值或者缺省值将被解释为 false。

要标记一个 StorageClass 为非默认的,你需要改变它的值为 false:

[shutang@lona-001 mysql-cluster]$ kubectl patch storageclass managed-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
storageclass.storage.k8s.io/managed-nfs-storage patched
[shutang@lona-001 mysql-cluster]$ kubectl get sc
NAME                  PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
longhorn              driver.longhorn.io   Delete          Immediate           true                   7h26m
managed-nfs-storage   fuseim.pri/ifs       Retain          Immediate           false                  27d
[shutang@lona-001 mysql-cluster]$
  1. 标记一个 longhorn 为默认的存储类
[shutang@lona-001 mysql-cluster]$ kubectl patch storageclass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/longhorn patched

请注意,最多只能有一个 StorageClass 能够被标记为默认。 如果它们中有两个或多个被标记为默认,Kubernetes 将忽略这个注解, 也就是它将表现为没有默认 StorageClass。

  1. 验证你选用的 StorageClass 为默认的
[shutang@lona-001 mysql-cluster]$ kubectl get sc
NAME                  PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
longhorn (default)    driver.longhorn.io   Delete          Immediate           true                   7h26m
managed-nfs-storage   fuseim.pri/ifs       Retain          Immediate           false                  27d
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Kubernetes 前言   Kubernetes,又称为 k8s(首字母为 k、首字母与尾字母之间有 8 个字...
    于露612阅读 4,396评论 0 0
  • 容器技术概念入门篇 从进程说开去 容器本身没有价值,有价值的是“容器编排”。 容器其实是一种沙盒技术。顾名思义,沙...
    白板时钟阅读 7,387评论 0 2
  • Kubernetes 存储卷 根据应用本身是否需要持久存储数据,以及每一次的请求跟此前的请求之间是否有关联性,可以...
    程序员札记阅读 4,649评论 0 8
  • 一、Kubernetes介绍 核心功能 Kubernetes抽象了数据中心的硬件设施,使得对外暴露的只是一个巨大的...
    睡不醒的大橘阅读 4,955评论 0 5
  • 一、理解存储卷 Volume(存储卷)是Pod中能够被多个容器访问的共享目录。解决了容器崩溃时文件丢失(容器中的文...
    LeeBoot阅读 5,694评论 0 0