kubernetes-存储-volume

背景:

kubernetes中的卷有明确的寿命–与封装它的的Pod相同.所以,卷的生命比Pod中的所有容器都长,当这个容器重启时数据仍然保存.当然,但Pod不在存在时,卷也将不复存在,也许更重要的是,kubernetes支持多种类型的卷,pod可以同事使用任意数量的卷.
Pod容器内公用pause的网络和存储卷
在这里插入图片描述

卷的类型:
这里主要介绍两种:emptyDir、hostpath.

emptyDir

当pod被分配节点时,首先创建emptyDir卷,并且只要该Pod在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod中的容器可以读写和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每个容器中相同或不同的路径上。当处于任何原因从节点中删除Pod时,emptyDir中的数据将被永久删除
注意:容器崩溃不会从节点中移除,因此emptyDir卷中的数据在容器崩溃时时安全的。

emptyDir的用法有:
暂存空间,例如用基于磁盘的合作排序
用作长时间计算崩溃恢复时的检查点
Web服务容器提供数据时,保存内容管理容器提取的文件

EmptyDir示例:
启动一个pod,里面有两个容器并且在不同的目录都挂载emptyDir:

[root@apiserver volume]# cat em.yaml 
apiVersion: v1
kind: Pod
metadata:
 name: volume-empty
spec:
 containers:
 - image: nginx
   name: volume-empty
   volumeMounts:
   - mountPath: /cache
     name: cache-volume
 - image: redis
   name: volume-empty1
   volumeMounts:
   - mountPath: /test
     name: cache-volume
 volumes:
  - name: cache-volume
    emptyDir: {}

发现第一个容器里面在/cache下挂载成功,并添加date到index.html

root@volume-empty:/cache# date > index.html 
root@volume-empty:/cache# cat index.html 
Sun May  3 09:24:48 UTC 2020

发现第二个容器里面在/test下挂载成功,并添加date到index.html

root@volume-empty:/test# date >> index.html
root@volume-empty:/test# cat index.html 
Sun May  3 09:24:48 UTC 2020
Sun May  3 09:25:06 UTC 2020

hostPath:

hostpath卷将主机节点的文件、系统中的文件或目录中挂载到集群中.
hostpath的用途:

  • 运行需要访问的Docker内部的容器;使用/var/lib/docker的hostpath
  • 在容器中运行cAdisor;使用/dev/cgroups的hostpath
    在这里插入图片描述
    使用这种类型时请注意,因为:
  • 由于每个节点上的文件都不同,具有相同配置(例如从podTemplate创建的)的pod在不同节点上的行为可能会有所不同.
  • 当kubernetes按照计划添加资源感知调度室,将无法考虑hostpath使用的资源.
  • 在底层主机上创建的文件或目录只能有root写入.您需要在特权容器中以root身份进行进程,或修改主机上的文件权限以便写入hostpath卷.

示例:

[root@apiserver volume]# cat volume.yaml 
apiVersion: v1
kind: Pod
metadata:
 name: volume-test
spec:
 containers:
 - image: nginx
   name: volume-test
   volumeMounts:
   - mountPath: /test
     name: test-volume
 volumes:
  - name: test-volume
    hostPath:
      path: /data
      type: Directory

我的node1节点有一个文件,pod running后进入容器查看容器/test目录下是否有此文件:

[root@apiserver volume]# kubectl exec -it volume-test bash
root@volume-test:/# cd /test/
root@volume-test:/test# ls
mariadb-galera

有mariadb-galera此文件,表示挂在成功.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值