Kubernetes StorageClass

2023-12-12 44

Kubernetes 默认的 Storage Class 是用于存储卷的抽象,它定义了如何创建、删除和挂载存储卷。本篇教程展示了如何改变默认的 Storage Class,它用于为没有特殊需求的 PersistentVolumeClaims 配置 volumes。

一、准备

必须拥有一个 Kubernetes 的集群,同时必须配置 kubectl 命令行工具与集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果还没有集群,可以通过 Minikube 构建一个自己的集群,或者可以使用下面的 Kubernetes 练习环境之一:

  • Killercoda
  • 玩转 Kubernetes

要获知版本信息,请输入 kubectl version.

二、改变默认存储类原因

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

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

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

三、改变默认StorageClass

1、列出集群中的 StorageClasses:

kubectl get storageclass

输出类似这样:

<code class="language-bash" data-lang="bash">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 <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

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

4、验证选用的 StorageClass 为默认的:

kubectl get storageclass

输出类似这样:

NAME             PROVISIONER               AGE
standard         kubernetes.io/gce-pd      1d
gold (default)   kubernetes.io/gce-pd      1d
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。