CKA [Storage] – Volume的讲解

问题1
我们的pod很多时候会保存一些文件或是用户数据,如果是使用deployment也就是stateless pod的话,那么当我们重启pod的时候,pod内所保存的文件也会一并摧毁,这就会造成了文件或是数据的丢失。

做个实验

1. 开启busybox pod

sleep 100 的作用是:

让容器里的进程 暂停(sleep)100秒,然后退出。

kubectl run busybox --image=busybox -- sleep 100

2. 进入到pod内

 kubectl exec -it busybox -- sh

3. 进入到home然后创建test.txt

cd /home
touch test.txt

4. 等100秒后,pod会被摧毁,然后再次被重新创建,然后你再次进入pod内会发现刚刚创建的文件并不存在了

kubectl get pod
kubectl exec -it busybox -- sh

每100秒之后pod就会complete, 接着就会重启pod,你看到的restarts就是总共重启的次数

问题2

多个container需要使用共享的文件

这就是为什么需要使用volume来存储数据,如果有一天你的database container删掉了,需要重新创建那么volume可以永久化的保存你的数据。

在kubernetes当中使用的volume会有很多种

ephemeral volume 只能在pod的运行周期内保存,如果要永久性保存的话就必须使用persistent volume

在pod的yaml当中,有volume,这个volume就是定义了volume的名称。

而volume mount 就是在container内就是定义了哪个path内的文件是保存在哪个volume内

以下就是volume和volume mount是使用yaml example

Loading

Facebook评论