k8s--Volum存储方式
1.Volume 介绍Volume时pod中能够被多个容器访问的共享目录 . Volume 时定义在pod上的。被一个pod里的多个容器挂载到具体的文件目录下。当容器被重启,Volume中的数据也不会丢失k8s 支持的Volume类型 : 本地卷 、NFS 、GlusterFS 、Ceph等分布式文件系统2.Volume使用1.临时卷 emptyDir时Pod分配到Node时创建的,初始为空,无需
·
1.Volume 介绍
- Volume时pod中能够被多个
容器
访问的共享目录 . Volume 时定义在pod上的。被一个pod里的多个容器挂载到具体的文件目录下。当容器被重启,Volume中的数据也不会丢失 - k8s 支持的Volume类型 : 本地卷 、NFS 、GlusterFS 、Ceph等分布式文件系统
2.Volume使用
1.临时卷 emptyDir
时Pod分配到Node时创建的,初始为空,无需指定宿主机上对应的目录文件,它时K8S 自动分配的一个目录。pod被删除时,也被永久删除。
用处:用于存储一些临时目录。实现同pod上多个容器之间的数据传输
语法格式
- volumes:
- name: datavol
emptyDir: {}
2.本地卷hostPath
- 使用hostPath 挂载到主机上的文件目录
- 需要访问宿主机上Docker引擎内部数据时,可以定义hostPath的宿主机目录为docker数据存储目录,使容器内部应用可以直接访问docker 的数据。
- 用于:日志永久保存 。实现同node中pod之间的传输
语法格式
volumes:
- name: "persistent-storage"
hostPath:
path: "/data"
注意
本地卷不提供pod的亲和性。可能出现映射在node1上的pod 。被调度到node2 上。导致原来node1上的数据不存在。
3.谷歌磁盘gcePersistentDisk
表示使用google共有云提供的永久磁盘
需要:谷歌GCE云主机
语法格式
volumes:
- name: test-volume
gcPersistentDisk:
pdName: my-data-disk
fsType: ext4
4.亚马逊卷 awsElasticBlockStore
- 与 GCE 类似,该类型的 Volume 使用亚马逊公有云提供的 EBS Volume 存储数据,需要先创建一个 EBS Volume 才能使用 awsElasticBlockStore。
- 使用 awsElasticBlockStore的一些限制条件
- Node 需要是 AWS EC2 实例。
- 这些 AWS EC2 实例需要与 EBS volume 存在于相同的 region 和 availability-zone 中。
- EBS 只支持单个 EC2 实例 mount 一个 volume。
- 通过 aws ec2 create-volume 命令创建一个 EBS volume
- 语法格式
volumes:
- name: test-volume
awsElasticBlockStore:
volumeID: aws://<availability-zone>/<volume-id>
fsType: ext4
5.共享卷NFS
- 使用 NFS 网络文g件系统提供的共享目录存储数据时,需要在系统中部署一个 NFS Server
- 通过共享 和主机之间挂载实现
- yum -y install nfs-utils
-语法:
volumes:
- name: nfs-volume
nfs:
server: nfs-server.localhost #nfs服务地址
path: "/"
6.其他类型volume
- iscsi:使用 iSCSI 存储设备上的目录挂载到 Pod 中。
- flocker:使用 Flocker 来管理存储卷。
- glusterfs:使用 GlusterFS 网络文件系统的目录挂载到 Pod 中。
- rbd:使用 Ceph 块设备共享存储(Rados Block Device)挂载到Pod中。
- gitRepo:通过挂载一个空目录,并从 GIT 库 clone 一个 git repository 以供 Pod 使用。
- secret:一个 secret volume 用于为 Pod 提供加密的信息,可以将定义在 Kubernetes 中的 secret 直接挂载为文件让 Pod 访问。Secret volume 是通过 tmfs(内存文件系统)实现的,所以这种类型的 volume 不会持久化。
更多推荐
已为社区贡献2条内容
所有评论(0)