k8s之emptyDir存储卷
一、简介
- emptyDir卷是最简单的卷,主要用于存储临时数据,当pod生命周期结束,emptyDir卷也就销毁。
- emptyDir卷应用场景一般是pod中多个容器共享数据,即在pod中定义一个emptyDir卷,然后容器A挂载到某个目录,容器B也挂载到某个目录,这样,容器A和容器B就能读写文件,就能共享数据。
二、存储介质
- medium:此目录所在的存储介质的类型,可用值为“default”或“Memory”。
- sizeLimit:当前存储卷的空间限额,默认值为nil,表示不限制。
三、实现emptyDir存储卷
root@k8s-master01:~/learning-k8s/examples/volumes# cat pod-with-emptyDir-vol.yaml
apiVersion: v1
kind: Pod
metadata:
name: pods-with-emptydir-vol
spec:
containers:
- image: ikubernetes/admin-box:v1.2
name: admin
command: ["/bin/sh", "-c"]
args: ["sleep 99999"]
resources: {}
volumeMounts:
- name: data
mountPath: /data
- image: ikubernetes/demoapp:v1.0
name: demoapp
resources: {}
volumeMounts:
- name: data
mountPath: /var/www/html
volumes:
- name: data
emptyDir:
medium: Memory
sizeLimit: 16Mi
dnsPolicy: ClusterFirst
restartPolicy: Always
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl apply -f pod-with-emptyDir-vol.yaml
pod/pods-with-emptydir-vol created
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl get pod
NAME READY STATUS RESTARTS AGE
pods-with-emptydir-vol 2/2 Running 0 5m20s
四、验证容器之间的数据共享
1、进入admin容器创建test.html文件,进入dempapp容器中验证。
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl exec -it pods-with-emptydir-vol -c admin bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@pods-with-emptydir-vol /# cd /data/
root@pods-with-emptydir-vol data# echo "<h1>Index Page</h1>" > test.html
root@pods-with-emptydir-vol data# cat test.html
<h1>Index Page</h1>
2、在admin容器的挂载目录下生成了test.html
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl exec -it pods-with-emptydir-vol -c demoapp /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
[root@pods-with-emptydir-vol /]# cd /var/www/html/
[root@pods-with-emptydir-vol /var/www/html]# ls
test.html
[root@pods-with-emptydir-vol /var/www/html]# cat test.html
<h1>Index Page</h1>
3、同理,在demoapp创建test02在admin容器也能看到
[root@pods-with-emptydir-vol /var/www/html]# echo $(date) $(hostname)> test02.html
[root@pods-with-emptydir-vol /var/www/html]# cat test
test.html test02.html
[root@pods-with-emptydir-vol /var/www/html]# cat test02.html
Mon Jan 22 13:19:03 UTC 2024 pods-with-emptydir-vol
[root@pods-with-emptydir-vol /var/www/html]# exit
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl exec -it pods-with-emptydir-vol -c admin bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@pods-with-emptydir-vol /# cd /data/
root@pods-with-emptydir-vol data# ls
test.html test02.html
root@pods-with-emptydir-vol data# cat test02.html
Mon Jan 22 13:19:03 UTC 2024 pods-with-emptydir-vol
k8s之emptyDir存储卷的更多相关文章
- k8s之存储卷及pvc
1.存储卷概述 因为pod是有生命周期的,pod一重启,里面的数据就没了,所以我们需要数据持久化存储,在k8s中,存储卷不属于容器,而是属于pod,也就是说同一个pod中的容器可以共享一个存储卷,存储 ...
- K8s的存储卷使用总结
K8s的存储卷: 它有四种存储卷: 1. emptyDir: 空目录,这种存储卷会随着Pod的删除而被清空,它一般作为缓存目录使用,或临时目录, 当做缓存目录时,通常会将一块内存空间映射到该目录上,让 ...
- k8s存储卷概述
pod本身具有生命周期,故其内部运行的容器及其相关数据自身均无法持久存在.docker支持配置容器使用存储卷将数据持久存储于容器自身文件系统之外的存储空间中,它们可以是节点文件系统或网络文件系统之上的 ...
- k8s系列---存储卷pv/pvc。configMap/secert
因为pod是有生命周期的,pod一重启,里面的数据就没了.所以我们需要数据持久化存储. 在k8s中,存储卷不属于容器,而是属于pod.也就是说同一个pod中的容器可以共享一个存储卷. 存储卷可以是宿主 ...
- kubernetes系列10—存储卷详解
本文收录在容器技术学习系列文章总目录 1.认识存储卷 1.1 背景 默认情况下容器中的磁盘文件是非持久化的,容器中的磁盘的生命周期是短暂的,这就带来了一系列的问题:第一,当一个容器损坏之后,kubel ...
- Kubernetes学习之路(十六)之存储卷
目录 一.存储卷的概念和类型 二.emptyDir存储卷演示 三.hostPath存储卷演示 四.nfs共享存储卷演示 五.PVC和PV的概念 六.NFS使用PV和PVC 1.配置nfs存储 2.定义 ...
- (九)Kubernetes 存储卷
Kubernetes存储卷概述 Pod本身具有生命周期,这就带了一系列的问题,第一,当一个容器损坏之后,kubelet会重启这个容器,但是文件会丢失-这个容器会是一个全新的状态:第二,当很多容器在同一 ...
- Kubernetes 学习12 kubernetes 存储卷
一.概述 1.我们此前讲过根据应用本身是否需要持久存储数据以及某一次请求和之前的请求是否有联系,可以分为四类应用 a.有状态,要存储 b.有状态,无持久存储 c.无状态,要存储 d.无状态,无持久存储 ...
- k8s学习笔记之八:存储卷
第一章.前言 默认情况下容器的数据都是非持久化的, 在容器消亡以后数据也跟着丢失, 所以 Docker 提供了 Volume 机制以便将数据持久化存储. 类似的, Kubernetes 提供了更强大的 ...
- k8s volume存储卷(四)
介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价,首先,kubernetes中的v ...
随机推荐
- 【Azure 应用服务】App Server 部署后,Docker报错,找不到8080端口
问题描述 App Service for Container. Docker Image 推送到ACR(向 Azure 容器注册表), 配置App Service并部署成功了.查看Docker日志( ...
- Calculate Similarity调研
Calculate Similarity - the most relevant Metrics in a Nutshell --调研学习相似度定义与计算 Zhang Zhibin 张芷彬 Many ...
- 阿里二面:如何定位&避免死锁?连着两个面试问到了!
在面试过程中,死锁是必问的知识点,当然死锁也是我们日常开发中也会遇到的一个问题,同时一些业务场景例如库存扣减,银行转账等都需要去考虑如何避免死锁,一旦线上发生了死锁,那可能年终不保.....下面我们就 ...
- nginx 重写(rewrite) 重定向(return error_page) 详解
使用 rewrite 指令用于重写URL Nginx的rewrite指令用于重写URL,它有几个参数,这些参数定义了如何匹配和重写请求的URL.以下是rewrite指令的常见参数及其说明: Regex ...
- python的软连接的操作方法
详细:切换python的版本 cd /usr/bin/ ls -l python* sudo rm -rf python sudo ln -s /usr/bin/python3.7 /usr/bin/ ...
- linux c 打印时间最简单的实例
最简单的代码,能够解决最棘手的问题,才是解决工程师的需要: #include <stdio.h> #include <time.h> #include <unistd.h ...
- 谈谈Android中的消息提示那些坑
Android中的消息提示无非就那几种,弹个窗(Toast或SnackBar),或者是弹出个对话框(Dialog),最近在使用的时候也是遇到了问题,有时候导致APP闪退 稍微研究会,总结了一下使用过程 ...
- 多线程系列(二十) -CompletableFuture使用详解
一.摘要 在上篇文章中,我们介绍了Future相关的用法,使用它可以获取异步任务执行的返回值. 我们再次回顾一下Future相关的用法. public class FutureTest { publi ...
- C++保证线程安全的方式
1.互斥量 可以确保同一时间只有一个线程访问临界区,防止出现竞态条件. 2.原子操作 std::atomic<int> mutex(1); 对原子变量的操作是线程安全的. 3.读写锁 st ...
- iOS端创建ReactNative容器第一步:打出jsbundle和资源包
react-native的打包流程是通过执行react-native bundle指令进行的. 添加构建指令 修改RN项目中的package.json文件,先其中添加构建命令build-relea ...