更改默认 StorageClass

此页面展示了如何更改默认 StorageClass,该 StorageClass 用于为没有特殊要求的 PersistentVolumeClaim 配置卷。

准备工作

你需要拥有一个 Kubernetes 集群,并且 kubectl 命令行工具已配置为与你的集群通信。建议你在一个至少包含两个非控制平面主机的节点的集群上运行此教程。如果你还没有集群,可以使用 minikube 创建一个,或者使用以下 Kubernetes 演练场之一:

要检查版本,输入 kubectl version

为何要更改默认 StorageClass?

根据安装方法,你的 Kubernetes 集群可能部署时带有一个标记为默认的现有 StorageClass。然后,这个默认 StorageClass 用于为不需要任何特定存储类的 PersistentVolumeClaim 动态供应存储。有关详细信息,请参阅 PersistentVolumeClaim 文档

预安装的默认 StorageClass 可能与你期望的工作负载不太匹配;例如,它可能提供的存储成本过高。如果是这种情况,你可以更改默认 StorageClass 或将其完全禁用,以避免动态供应存储。

删除默认 StorageClass 可能不起作用,因为它可能会被集群中运行的 addon manager 自动重新创建。请查阅你的安装文档,了解有关 addon manager 以及如何禁用单个插件的详细信息。

更改默认 StorageClass

  1. 列出集群中的 StorageClass

    kubectl get storageclass
    

    输出类似于以下内容:

    NAME                 PROVISIONER               AGE
    standard (default)   kubernetes.io/gce-pd      1d
    gold                 kubernetes.io/gce-pd      1d
    

    默认 StorageClass 由 (default) 标记。

  2. 将默认 StorageClass 标记为非默认

    默认 StorageClass 有一个注解 storageclass.kubernetes.io/is-default-class 设置为 true。任何其他值或缺少该注解都被解释为 false

    要将 StorageClass 标记为非默认,你需要将其值更改为 false

    kubectl patch storageclass standard -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    

    其中 standard 是你选择的 StorageClass 的名称。

  3. 将 StorageClass 标记为默认

    与上一步类似,你需要添加/设置注解 storageclass.kubernetes.io/is-default-class=true

    kubectl patch storageclass gold -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    

    请注意,你可以将多个 StorageClass 标记为默认。如果多个 StorageClass 被标记为默认,那么没有显式定义 storageClassNamePersistentVolumeClaim 将使用最近创建的默认 StorageClass 创建。当使用指定的 volumeName 创建 PersistentVolumeClaim 时,如果静态卷的 storageClassNamePersistentVolumeClaim 上的 StorageClass 不匹配,它将保持待定状态。

  4. 验证你选择的 StorageClass 是否为默认

    kubectl get storageclass
    

    输出类似于以下内容:

    NAME             PROVISIONER               AGE
    standard         kubernetes.io/gce-pd      1d
    gold (default)   kubernetes.io/gce-pd      1d
    

下一步

上次修改时间:太平洋标准时间 2024 年 10 月 04 日晚上 11:16:修复默认 storageclass 文档中的不一致问题 (4e3523c0a0)