Kubernetes(K8S) 卷(Volume)
-
Kubernetes 卷(Volumes)
在Kubernetes中,可以将卷视为目录,容器中的容器可以访问该目录。Kubernetes中有不同类型的卷,并且该类型定义了卷的创建方式及其内容。卷的概念存在于Docker中,但是唯一的问题是卷非常受限于特定的Pod。Pod的使用寿命一结束,卷也随之丢失。另一方面,通过Kubernetes创建的卷不限于任何容器。它支持Kubernetes容器内部署的任何或所有容器。Kubernetes卷的主要优势在于,它支持不同类型的存储,其中Pod可以同时使用多个存储。 -
Kubernetes卷的类型
这是一些流行的Kubernetes卷的列表-- emptyDir - 这是在将Pod首次分配给节点时创建的一种卷。只要Pod在该节点上运行,它就保持活动状态。该卷最初是空的,并且容器中的容器可以读取和写入emptyDir卷中的文件。从节点中删除Pod后,将清空emptyDir中的数据。
- hostPath - 这种类型的卷将文件或目录从主机节点的文件系统挂载到您的Pod中。
- gcePersistentDisk - 这种类型的卷将Google Compute Engine(GCE)永久磁盘安装到Pod中。从节点中删除Pod后,gcePersistentDisk中的数据将保持不变。
- awsElasticBlockStore - 这种类型的卷将Amazon Web Services(AWS)弹性块存储装载到Pod中。就像gcePersistentDisk,在一个数据awsElasticBlockStore当POD从节点取出保持不变。
- nfs - nfs卷允许将现有的NFS(网络文件系统)安装到您的Pod中。从节点中删除Pod时,不会擦除nfs卷中的数据。该卷仅被卸载。
- iscsi - iscsi卷允许将现有的iSCSI(IP上的SCSI)卷安装到Pod中。
- flocker - 这是一个开源集群容器数据卷管理器。它用于管理数据量。甲flocker体积允许Flocker数据集将被安装到吊舱。如果数据集在Flocker中不存在,那么您首先需要使用Flocker API创建它。
- glusterfs - Glusterfs是一个开放源代码的网络文件系统。glusterfs体积允许将glusterfs体积安装到您的吊舱中。
- rbd - RBD代表Rados Block Device。一个RBD量允许拉多什块设备的体积被安装到您的吊舱。从节点中删除Pod后,数据仍保留。
- cephfs - cephfs卷允许将现有的CephFS卷挂载到您的Pod中。从节点中删除Pod后,数据将保持不变。
- gitRepo - gitRepo卷挂载一个空目录,并将git存储库克隆到其中,以供您的pod使用。
- secret - secret卷用于将敏感信息(例如密码)传递到Pod。
- persistentVolumeClaim - persistentVolumeClaim卷用于一个PersistentVolume安装到容器。PersistentVolume是用户“声明”持久存储(例如GCE PersistentDisk或iSCSI卷)的一种方式,而无需了解特定云环境的详细信息。
- DownwardAPI - DownwardAPI卷用于使向下API数据可供应用程序使用。它安装目录,并将请求的数据写入纯文本文件。
- azureDiskVolume - AzureDiskVolume用于将Microsoft Azure数据磁盘安装到Pod中。
-
持久量和持久量声明
永久卷(PV) -这是由管理员提供的一部分网络存储。它是群集中的一种资源,它独立于使用PV的任何单个容器。持久体积声明(PVC) -Kubernetes请求为其Pod分配的存储称为PVC。用户不需要知道基础供应。必须在创建容器的相同名称空间中创建声明。创建持久卷在上面的代码中,我们定义了-- kind:PersistentVolume → 我们已将种类定义为PersistentVolume,它告诉kubernetes使用的yaml文件是用于创建持久卷的。
- name:pv0001 → 我们正在创建的PersistentVolume的名称。
- capacity: → 此规格将定义我们尝试创建的PV的容量。
- storage:10Gi → 这告诉底层基础结构我们正在尝试在定义的路径上声明10Gi空间。
- ReadWriteOnce → 这将告诉我们正在创建的卷的访问权限。
- path: "/tmp/data01" → 此定义告诉计算机我们正在尝试在基础结构的该路径下创建卷。
创建PV检查PV描述PV创建持久卷声明在上面的代码中,我们定义了-- kind:PersistentVolumeClaim → 它指示基础结构我们正在尝试声明指定的空间量。
- name:myclaim-1 → 我们尝试创建的声明的名称。
- ReadWriteOnce → 这将指定我们尝试创建的声明的模式。
- storage:3Gi → 这将告诉kubernetes我们正在尝试声明的空间量。
创建PVC获取有关PVC的详细信息描述PVC在POD中使用PV和PVC在上面的代码中,我们定义了-- volumeMounts: →这是容器中将要进行安装的路径。
- volumes: →此定义定义了我们要声明的体积定义。
- persistentVolumeClaim: →在此之下,我们定义将在定义的pod中使用的卷名。