【云原生kubernets】存储管理与应用

一、存储卷介绍

1.1.为什么需要存储卷:

容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失,因为容器会以干净的状态重建。其次,当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。

1.2.存储卷的生命周期

Kubernetes 卷具有明确的生命周期,与包裹它的 Pod 相同。 因此,卷比 Pod 中运行的任何容器的存活期都长,在容器重新启动时数据也会得到保留。 当一个 Pod 不再存在时,卷也将不再存在。Kubernetes 可以支持许多类型的卷,Pod 也能同时使用任意数量的卷,卷不能挂载到其他卷,也不能与其他卷有硬链接,Pod 中的每个容器必须独立地指定每个卷的挂载位置。

二、基本存储

2.1.EmptyDir

2.1.1.EmptyDir本质:

EmptyDir是最基础的Volume类型,一个EmptyDir就是Host上的一个空目录。

2.1.2.EmptyDir工作流程:

EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时, EmptyDir中的数据也会被永久删除。当 Pod 指定到某个节点上时,首先创建的是一个 emptyDir 卷,并且只要 Pod 在该节点上运行,卷就一直存在。 就像它的名称表示的那样,卷最初是空的。 尽管 Pod 中的容器挂载 emptyDir 卷的路径可能相同也可能不同,但是这些容器都可以读写 emptyDir 卷中相同的文件。 当 Pod 因为某些原因被从节点上删除时,emptyDir 卷中的数据也会永久删除。

2.1.3.EmptyDir用途如下:

(1)临时空间,例如用于某些应用程序运行时所需的临时目录,且无须永久保留。

(2)一个容器需要从另一个容器中获取数据的目录,即多容器共享目录。

接下来,通过一个容器之间文件共享的案例来使用一下EmptyDir。

在一个Pod中准备两个容器nginx和busybox,然后声明一个Volume分别挂在到两个容器的目录中,然后nginx容器负责向Volume中写日志,busybox中通过命令将日志内容读到控制台。

相关推荐
赵渝强老师1 小时前
【赵渝强老师】K8s的DaemonSets控制器
linux·docker·云原生·容器·kubernetes
gitxuzan_4 小时前
云原生链路观测平台 openobserve + fluent-bit,日志收集
云原生·openobserve·fluent-bit
祈心无尘6 小时前
zookeeper向管控平台上报状态
分布式·zookeeper·云原生
星辰@Sea6 小时前
使用ZooKeeper作为定时任务注册中心
分布式·zookeeper·云原生
lxr19086 小时前
Serverless架构
云原生·架构·serverless
我明天再来学Web渗透8 小时前
【java面经】微服务架构速记
java·开发语言·微服务·云原生·架构
小诸葛的博客9 小时前
istio中serviceentry结合egressgateway的使用
云原生·istio
小诸葛的博客9 小时前
istio中如何使用serviceentry引入外部服务
云原生·istio
装不满的克莱因瓶12 小时前
【微服务】Eureka的自我保护机制
java·spring cloud·云原生·eureka·注册中心·服务注册
Richardlygo1 天前
(k8s)kubernetes集群基于Containerd部署
云原生·容器·kubernetes