乐趣区

关于kubernetes:改变默认存储类

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
  2. 标记默认 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。

  2. 验证你选用的 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
退出移动版