【Kubernetes 013】Volume原理和实际操作详解

一个pod内有多个容器,我们知道这些容器是共享网络栈的,但是文件系统却似乎还不能共享?如果一个容器运行了一段时间,崩溃重启了,里面保存的内容都丢失了,这又该如何解决?带着这些疑问我们一起来学习k8s中负责数据存储的组件:volume。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

Docker中的数据保存

docker启动容器,只要容器不被删除其内部的文件不会消失

[root@k8s-node1 ~]# docker run -it -d victor2019/test:v1
e64c2bc31ac04174c1c78f9223e01a2cdec371104c58b74bdfc0a439913bf2d3

之后往容器内写点东西,因为我这个测试镜像是nginx,所以写到主页面便于测试

[root@k8s-node1 ~]# docker exec e64c bash -c "echo hello > /usr/share/nginx/html/index.html"

查看一下容器的docker0网段的ip

[root@k8s-node1 ~]# docker inspect e64c | grep 172
            "Gateway": "172.17.0.1",
            "IPAddress": "172.17.0.2",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",

验证下写进去的内容

[root@k8s-node1 ~]# curl 172.17.0.2
hello

然后停掉容器再启动

[root@k8s-node1 ~]# docker kill e64c
e64c
[root@k8s-node1 ~]# docker start e64c
e64c
[root@k8s-node1 ~]# curl 172.17.0.2
hello

容器内的文件一直都还在。

所以直接用docker起容器的话,指定--restart=always就可以保证容器提供持续服务了。

K8s中的数据保存

但是k8s的机制不一样,每个pod都有自己完整的生命周期,即使没有被人为删除,如果pod因为其中某个容器崩溃重启,不仅pod的ip会变,里面所有容器保存的内容也会全部消失

那么有没有一种办法,可以让k8s的pod可以和docker里面的容器一样,除非是被人为删除,不然即使重启里面保存的东西一直都在。我们这一节要学习的volume就是为了解决这个问题而引入的。

需要注意,docker中也有volume的概念,不过docker中的volume是容器的内容在宿主机磁盘的持久化,即使容器删除也会一直在,和我们下一节要学习的PVC有点像,但是和这里k8s的volume是两个东西,要注意区分

k8s中的volume

volume就是一个可以被pod中所有容器使用的公共文件夹,每个容器可以将这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值