如何在Kubernetes中创建HostPath持久卷?

译文
开源
本文介绍了如何在Kubernetes中创建HostPath持久卷的方法。

【51CTO.com快译】

您可能知道Pod中的数据在Pod的整个生命周期过程中一直存在。如果Pod消失,属于该Pod的所有数据也随之消失。因此,如果您希望在Pod的生命周期结束后保留数据,Kubernetes中就要有所谓的持久卷。

不妨学习如何创建HostPath持久卷,这很容易上手。同时了解有关持卷的基础知识。

就不同供应商而言,kubernetes中可供使用的持久卷有以下类型。

  • GCEPersistentDisk
  • AWSElasticBlockStore
  • AzureFile
  • AzureDisk
  • CSI
  • FC(光纤通道)
  • FlexVolume
  • Flocker
  • NFS
  • iSCSI
  • RBD(Ceph Block Device)
  • CephFS
  • Cinder(OpenStack块存储)
  • Glusterfs
  • VsphereVolume
  • Quobyte Volumes
  • HostPath(仅用于单节点测试——不以任何方式支持本地存储,无法在多节点集群中运行)
  • Portworx Volumes
  • ScaleIO Volumes
  • StorageOS

如您所见,就HostPath而言,应仅将其用于测试目的。它也不支持多节点集群。如果您想了解有关持久卷的更多信息,可以点击该链接(https://kubernetes.io/docs/concepts/storage/persistent-volumes/)。

持久卷的基本过程如下:

  1. K8s管理员在集群中创建持久卷。
  2. 用户一旦声明其状态变为“Bound”,便使用“持久卷声明”对其进行声明。
  3. 然后Pod使用该卷存储将在Pod的生命周期结束后持续存在的数据。

理论方面讲得够多了,不妨说说技术步骤:

  • 创建持久卷

在该步骤中,我们使用以下yaml清单文件来实现同样的目的。

图1

如上述定义文件显示,其存储大小是1GB。路径是“/tmp/kube”。不妨创建PV,如下所示:

图2

使用以下命令,再次核查PV和持久卷声明:

图3

如您所见,PV已创建,其状态为Available;由于我们未指定重新声明策略,使用默认值“Retain”,这意味着即使pvc(持久卷声明)被删除,PV和数据也不会自动被删除。我们会对此进行测试。

  • 创建持久卷声明

为了使用PV,我们需要创建持久卷声明或PVC来使用它。以下是同样的yaml清单文件。

图4

上述定义中有必要指出,声明仅针对100mb(>= size of PV),另外Access模式是“ReadWriteOnce”,这与PV的模式一样。因此,我们能够创建PVC,如下所示:

图5

检查pv和pvc的状态。

图6

您会看到,pv的状态已从之前的Available变成了Bound。

  • 创建Pod,把该PV作为里面的挂载点来使用。

图7

如Pod定义文件中所述,它会在Pod里面创建挂载点/tmp/mydata。不妨使用上述定义文件创建Pod。

图8

检查状态,并检查Pod:

图9

在描述输出中,您可以看到/tmp/mydata卷是使用来自声明pvc-hostpath的host-volume创建的。另外,Pod是在节点“kworker01”上按计划/创建的。

不妨登录进入到Pod创建示例文件。为了演示Pod消失后数据的生命周期:

图10

在上述演示中,我们在/tmp/mydata里面创建了“Hello.txt”。现在不妨删除Pod。

图11

Pod已成功删除,不妨登录入节点“kworker01”,Pod之前已按计划创建,检查数据在Pod删除后是否持久存在。

图12

您可以看到,即便Pod已消失,我们的文件“Hello.txt”仍驻留在节点上。

原文标题:How to create HostPath persistent volume in Kubernetes

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2019-07-30 10:33:01

2020-07-13 07:00:21

Kubernetes

2021-12-06 08:00:00

Kubernetes容器数据

2020-10-09 11:15:14

LinuxLVM逻辑卷管理

2019-04-10 10:15:52

Linux逻辑卷文件系统

2023-02-06 17:49:35

Linux符号链接

2024-07-30 08:00:00

Kubernetes数据库

2023-07-29 11:54:44

KuberneteNFS

2020-10-22 16:48:30

LinuxLVM逻辑卷调整

2022-11-11 09:01:08

SwiftUI条形图子视图

2011-05-04 09:11:30

RPM包Linux

2019-05-14 11:00:07

LinuxSSH别名

2015-04-09 11:05:55

openstack公有云openstack镜像

2022-06-27 05:48:24

Kubernetes容器

2020-07-09 13:10:42

GIMP曲线文本应用

2022-04-01 07:35:45

IDEAJavaWeb 项目

2021-02-18 17:00:52

Linux归档文件

2015-08-05 15:10:24

UbuntuLVM

2021-05-28 17:59:37

K8sDNS解析CoreDNS

2021-08-09 09:00:00

Kubernetes云计算架构
点赞
收藏

51CTO技术栈公众号