Kubernetes教程

Kubernetes动态卷制备

一、动态卷制备

动态卷制备允许按需创建存储卷。如果没有动态制备,集群管理员需要手动联系云或存储提供商来创建新的存储卷,并在Kubernetes集群中创建PersistentVolume对象来表示这些卷。动态制备功能消除了集群管理员预先配置存储的需求。相反,它能够在用户请求时自动创建所需的存储卷。

动态卷制备的实现基于storage.k8s.io API组中的StorageClass API对象。集群管理员可以根据需要定义多个StorageClass对象,每个对象指定一个卷插件(也称为provisioner),该卷插件向卷制备商提供在创建卷时所需的数据卷信息和相关参数。

集群管理员可以在集群中定义和公开多种存储,这些存储可以来自相同或不同的存储系统,并具有自定义参数集。这种设计确保了终端用户不必担心存储制备的复杂性和微小差别,但仍然能够从多个存储选项中进行选择。

二、启用动态卷制备

要启用动态制备功能,集群管理员需要预先为用户创建一个或多个 StorageClass 对象。每个 StorageClass 对象定义当动态制备被调用时,要使用哪个驱动以及要传递哪些参数给驱动。StorageClass 的名称必须是一个合法的 DNS 子域名。

以下示例清单显示了如何创建一个名为 "slow" 的 StorageClass 存储类,该存储类提供类似于标准磁盘的永久性磁盘:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard

以下清单创建了一个 "fast" 存储类,它提供类似 SSD 的永久磁盘:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd

三、使用动态卷制备

在 Kubernetes 中,用户可以通过在 PersistentVolumeClaim (PVC) 中指定存储类来请求动态制备的存储。在 Kubernetes v1.9 之前,可以使用 volume.beta.kubernetes.io/storage-class 注解来实现这一功能。然而,从 Kubernetes v1.6 开始,不推荐使用该注解。

相反,用户现在应该使用 PersistentVolumeClaim 对象的 storageClassName 字段来指定所需的存储类。这个字段的值必须与集群管理员配置的 StorageClass 名称匹配。

例如:要选择 “fast” 存储类,用户将创建如下的 PersistentVolumeClaim:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: claim1
spec:
accessModes:
- ReadWriteOnce
storageClassName: fast
resources:
requests:
storage: 30Gi

该声明会自动制备一块类似 SSD 的永久磁盘。 在删除该声明后,这个卷也会被销毁。

四、设置默认值的行为

在集群上可以启用动态卷制备,以便在未指定存储类的情况下动态设置所有声明。 集群管理员可以通过以下方式启用此行为:

1、标记一个 StorageClass 为 默认;

2、确保 DefaultStorageClass 准入控制器在 API 服务器端被启用。

管理员可以通过向特定的 StorageClass 添加 storageclass.kubernetes.io/is-default-class 注解来将其标记为默认存储类。当集群中存在默认的 StorageClass,并且用户创建一个未指定 storageClassName 的 PersistentVolumeClaim (PVC) 时,DefaultStorageClass 准入控制器将自动为该 PVC 添加一个指向默认存储类的 storageClassName 字段。

注意:集群上最多只能有一个 默认 存储类,否则无法创建没有明确指定 storageClassName 的PersistentVolumeClaim。

五、拓扑感知

在多可用区集群中,Pod 可以被分散到某个区域的多个可用区。为了确保数据的高可用性和数据冗余,通常情况下,存储后端应该部署在多个可用区中。然而,在单可用区存储后端部署的情况下,可以通过设置卷绑定模式来实现将存储后端制备到 Pod 被调度到的可用区。

广告合作
QQ群号:707632017

温馨提示:

1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com。(#改为@)

2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

目录