【云原生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中通过命令将日志内容读到控制台。

相关推荐
codeejun5 小时前
每日一Go-73、云原生成本优化 —— 资源限制 & 指标驱动扩容
开发语言·云原生·golang
真上帝的左手9 小时前
11. 容器化 vs 虚拟化-K8s-工作负载实战
云原生·容器·kubernetes
张忠琳12 小时前
【kubernetes v1.21】(controller-manager part 1)kube-controller-manager 核心架构与启动流程
云原生·架构·kubernetes
HackTwoHub13 小时前
K8s综合渗透测试工具,集成信息搜集、权限逃逸、横向移动,一站式搞定全流程渗透测试工作
人工智能·安全·web安全·云原生·容器·kubernetes·系统安全
IT策士14 小时前
第 37 篇 k8s之调度进阶:亲和性、污点与容忍
云原生·容器·kubernetes
IT策士15 小时前
第 38 篇 k8s之RBAC 与 ServiceAccount 实战
云原生·容器·kubernetes
IT策士15 小时前
第 36 篇 k8s之资源管理:Requests、Limits 与 QoS
云原生·容器·kubernetes
章老师说17 小时前
B站网关事故背后:OpenResty 与 Lua 的稳定性代价
nginx·云原生·负载均衡·lua·openresty
半亩码田17 小时前
【.NET新特性·第4篇】.NET Aspire 入门:云原生开发新姿势
云原生·.net
装不满的克莱因瓶18 小时前
Spring 全家桶与 Spring 6 新特性详解:从 IoC 到云原生时代
java·spring·云原生·jdk·新特性·spring6