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


您可能知道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/)。

持久卷的基本过程如下:

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

  • 创建持久卷

在该步骤中,我们使用以下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

相关内容