设置现有存储

本文介绍如何在 Rancher 中为工作负载设置现有的持久存储。

本节假设你了解 Kubernetes 的持久卷和持久卷声明的概念。如需更多信息,请参阅存储的工作原理

要设置存储,请执行以下步骤:

先决条件

  • 要将持久卷创建为 Kubernetes 资源,你必须具有管理卷角色。

  • 如果你要为云集群配置存储,则存储和集群主机必须使用相同的云提供商。

1. 设置持久存储

在 Rancher 中创建持久卷不会创建存储卷。它只创建映射到现有卷的 Kubernetes 资源。因此,在你可以将持久卷创建为 Kubernetes 资源之前,你必须先配置存储。

设置持久存储设备的步骤会因你的基础设施而异。我们提供了使用 vSphereNFSAmazon EBS设置存储的示例。

如果你有一个块存储池并且不想使用云提供商,你可以使用 Longhorn 为 Kubernetes 集群提供持久存储。详情请参见本页面

2. 添加一个引用持久存储的 PersistentVolume

这些步骤描述了如何在 Kubernetes 的集群级别设置 PersistentVolume。

  1. 点击 ☰ > 集群管理

  2. 转到要添加持久卷的集群,然后单击 Explore

  3. 在左侧导航栏中,单击存储  持久卷

  4. 单击创建

  5. 输入持久卷的名称

  6. 为正在使用的磁盘类型或服务选择卷插件。将存储添加到由云提供商托管的集群时,请使用云提供商的云存储插件。例如,如果你有一个 Amazon EC2 集群并且想要使用云存储,则必须使用 Amazon EBS 磁盘卷插件。

  7. 输入卷的容量(单位:GB)。

  8. 填写插件配置表单。每个插件类型都需要磁盘类型供应商的信息。有关每个插件的表单和所需信息的帮助,请参阅插件的供应商文档。

  9. 可选:在自定义表单中,配置访问模式。此选项设置可以访问卷的节点数量,以及节点的读/写权限。Kubernetes 文档中的表格列出了插件支持的访问模式。

  10. 可选:在自定义表单中,配置挂载选项。每个卷插件都允许你在安装过程中指定其他命令行选项。请查阅每个插件的供应商文档以获取可用的挂载选项。

  11. 单击创建

结果:已创建你的新持久卷。

3. 为使用 StatefulSet 部署的 Pod 使用存储类

StatefulSet 管理 Pod 的部署和扩展,同时为每个 Pod 维护一个粘性标识。在这个 StatefulSet 中,我们将配置一个 VolumeClaimTemplate。StatefulSet 管理的每个 Pod 都将部署一个基于此 VolumeClaimTemplate 的 PersistentVolumeClaim。PersistentVolumeClaim 将引用我们创建的 PersistentVolume。因此,在部署 StatefulSet 管理的每个 Pod 时,都会绑定一个 PersistentVolumeClaim 中定义的 PersistentVolume。

你可以在工作负载创建期间或之后为 StatefulSet 配置存储。

以下步骤描述了如何将现有存储分配给新的 StatefulSet:

  1. 点击 ☰ > 集群管理

  2. 转到要为 StatefulSet 配置存储的集群,然后单击 Explore

  3. 在左侧导航栏中,单击工作负载  StatefulSets

  4. 单击创建

  5. 选择要部署工作负载的命名空间。

  6. 输入 StatefulSet 的名称。

  7. 卷声明模板选项卡上,单击添加声明模板

  8. 单击使用现有的持久卷

  9. 持久卷字段中,选择你创建的持久卷。

  10. 挂载点字段中,输入工作负载将用于访问卷的路径。

  11. 点击启动

结果:当工作负载被部署时,它会向 Kubernetes master 请求指定的磁盘空间。如果在部署工作负载时具有指定资源的 PV 是可用的,则 Kubernetes master 会将 PV 绑定到 PVC。

以下步骤描述了如何将持久存储分配给现有工作负载:

  1. 点击 ☰ > 集群管理

  2. 转到要为 StatefulSet 配置存储的集群,然后单击 Explore

  3. 在左侧导航栏中,单击工作负载  StatefulSets

  4. 转到要添加持久存储的工作负载。单击 ⋮ > 编辑

  5. 卷声明模板选项卡上,单击添加声明模板

  6. 单击使用现有的持久卷

  7. 持久卷字段中,选择你创建的持久卷。

  8. 挂载点字段中,输入工作负载将用于访问卷的路径。

  9. 点击启动

结果:工作负载将向 Kubernetes master 请求指定的磁盘空间。如果在部署工作负载时具有指定资源的 PV 是可用的,则 Kubernetes master 会将 PV 绑定到 PVC。