教程 > k8s 教程 > 阅读:38

kubernetes(k8s) volumes 卷——迹忆客-ag捕鱼王app官网

在 kubernetes 中,可以将卷视为 pod 中的容器可以访问的目录。 我们在 kubernetes 中有不同类型的卷,类型定义了卷的创建方式及其内容。

docker 中存在卷的概念,但唯一的问题是卷非常受限于特定的 pod。 pod 的生命周期一结束,卷也随之丢失。

另一方面,通过 kubernetes 创建的卷不限于任何容器。 它支持部署在 kubernetes 的 pod 内的任何或所有容器。 kubernetes 卷的一个关键优势是,它支持不同类型的存储,其中 pod 可以同时使用多个。


kubernetes 卷的类型

这是一些流行的 kubernetes 卷的类型列表

  • emptydir - 这是一种在 pod 首次分配给节点时创建的卷。只要 pod 在该节点上运行,它就会保持活动状态。卷最初是空的,pod 中的容器可以读取和写入 emptydir 卷中的文件。一旦 pod 从节点中移除,emptydir 中的数据就会被擦除。
  • hostpath - 这种类型的卷将文件或目录从主机节点的文件系统安装到我们的 pod 中。
  • gcepersistentdisk - 这种类型的卷将 google compute engine (gce) persistent disk 安装到我们的 pod 中。当 pod 从节点中移除时,gcepersistentdisk 中的数据保持不变。
  • awselasticblockstore - 这种类型的卷将 amazon web services (aws) 弹性块存储安装到我们的 pod 中。就像 gcepersistentdisk 一样,当 pod 从节点中移除时,awselasticblockstore 中的数据保持不变。
  • nfs - nfs 卷允许将现有的 nfs(网络文件系统)安装到我们的 pod 中。当 pod 从节点中移除时,nfs 卷中的数据不会被擦除。该卷仅被卸载。
  • iscsi - iscsi 卷允许将现有的 iscsi(scsi over ip)卷安装到我们的 pod 中。
  • flocker - 它是一个开源集群容器数据卷管理器。它用于管理数据量。flocker 卷允许将 flocker 数据集挂载到 pod 中。如果数据集在 flocker 中不存在,那么我们首先需要使用 flocker api 创建它。
  • glusterfs - glusterfs 是一个开源网络文件系统。 glusterfs 卷允许将 glusterfs 卷安装到您的 pod 中。
  • rbd - rbd 代表 rados 块设备。 rbd 卷允许将 rados 块设备卷挂载到我们的 pod 中。从节点中删除 pod 后,数据仍然保留。
  • cephfs - cephfs 卷允许将现有的 cephfs 卷挂载到我们的 pod 中。 pod 从节点中移除后,数据保持不变。
  • gitrepo - 一个 gitrepo 卷挂载一个空目录并将一个 git 存储库克隆到其中供我们的 pod 使用。
  • secret - secret 卷用于将敏感信息(例如密码)传递给 pod。
  • persistentvolumeclaim - persistentvolumeclaim 卷用于将 persistentvolume 挂载到 pod 中。 persistentvolume 是用户在不了解特定云环境细节的情况下“声明”持久存储(例如 gce persistentdisk 或 iscsi 卷)的一种方式。
  • downapi - 向下 api 卷用于向应用程序提供向下 api 数据。它挂载一个目录并将请求的数据写入纯文本文件。
  • azurediskvolume - azurediskvolume 用于将 microsoft azure 数据磁盘安装到 pod 中。

持久卷(persistent volume) 和持久卷声明(persistent volume claim)

  • persistent volume (pv) - 它是由管理员配置的一块网络存储。 它是集群中的一个资源,独立于任何使用 pv 的单个 pod。
  • persistent volume claim (pvc) - kubernetes 为其 pod 请求的存储称为 pvc。 用户不需要知道底层配置。 声明必须在创建 pod 的同一命名空间中创建。

创建持久卷

kind: persistentvolume ---------> 1
apiversion: v1
metadata:
name: pv0001 ------------------> 2
labels:
type: local
spec:
capacity: -----------------------> 3
storage: 10gi ----------------------> 4
accessmodes:
- readwriteonce -------------------> 5
hostpath:
path: "/tmp/data01" --------------------------> 6

在上面的代码中,我们定义了 -

  • kind: persistentvolume → 我们将 kind 定义为 persistentvolume,它告诉 kubernetes 正在使用的 yaml 文件是用于创建 persistent volume。
  • name: pv0001 → 我们正在创建的 persistentvolume 的名称。
  • capacity: → 该规范将定义我们尝试创建的 pv 容量。
  • storage: 10gi → 这告诉底层基础设施我们正试图在定义的路径上申请 10gi 空间。
  • readwriteonce → 这告诉我们正在创建的卷的访问权限。
  • path: "/tmp/data01" → 这个定义告诉机器我们正试图在底层基础设施的这个路径下创建卷。

创建 pv

$ kubectl create –f local-01.yaml
persistentvolume "pv0001" created

检查 pv

$ kubectl get pv
name capacity accessmodes status claim reason age
pv0001 10gi rwo available 14s

查看 pv 信息

$ kubectl describe pv pv0001

创建持久卷声明

kind: persistentvolumeclaim --------------> 1
apiversion: v1
metadata:
name: myclaim-1 --------------------> 2
spec:
accessmodes:
- readwriteonce ------------------------> 3
resources:
requests:
storage: 3gi ---------------------> 4

在上面的代码中,我们定义了 -

  • kind: persistentvolumeclaim → 它指示底层基础设施我们正在尝试申请指定数量的空间。
  • name: myclaim-1 → 我们尝试创建的声明的名称。
  • readwriteonce → 这指定了我们尝试创建的声明的模式。
  • storage: 3gi → 这将告诉 kubernetes 我们试图申请的空间量。

创建 pvc

$ kubectl create –f myclaim-1
persistentvolumeclaim "myclaim-1" created

获取有关 pvc 的详细信息

$ kubectl get pvc
name status volume capacity accessmodes age
myclaim-1 bound pv0001 10gi rwo 7s

描述pvc

$ kubectl describe pv pv0001

将 pv 和 pvc 与 pod 一起使用

kind: pod
apiversion: v1
metadata:
name: mypod
labels:
name: frontendhttp
spec:
containers:
- name: myfrontend
image: nginx
ports:
- containerport: 80
name: "http-server"
volumemounts: ----------------------------> 1
- mountpath: "/usr/share/tomcat/html"
name: mypd
volumes: -----------------------> 2
- name: mypd
persistentvolumeclaim: ------------------------->3
claimname: myclaim-1

在上面的代码中,我们定义了 -

  • volumemounts: → 这是容器中安装的路径。
  • volume:→ 这个定义了我们要声明的卷定义。
  • persistentvolumeclaim:→ 在此之下,我们定义了将在定义的 pod 中使用的卷名。

查看笔记

扫码一下
查看教程更方便
网站地图