当前位置: 首页 > ds >正文

k8s的yaml文件里的volume跟volumeMount的区别

volume 是 Pod 级别的资源,用于定义存储卷。它是一个独立于容器的存储资源,可以被一个或多个容器共享使用。volume 的定义位于 Pod 的 spec.volumes 部分。

特点
  • 独立性volume 是 Pod 的一部分,而不是容器的一部分。它独立于容器的生命周期,即使容器被销毁,volume 的数据仍然可以保留。
  • 共享性:同一个 Pod 中的多个容器可以共享同一个 volume,从而实现容器之间的数据共享。
  • 多种类型volume 支持多种类型,包括 emptyDirhostPathconfigMapsecretpersistentVolumeClaim 等。
示例
apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:containers:- name: container1image: nginxvolumeMounts:- name: shared-datamountPath: /data- name: container2image: busyboxcommand: ["/bin/sh", "-c", "tail -f /dev/null"]volumeMounts:- name: shared-datamountPath: /datavolumes:- name: shared-dataemptyDir: {}

在这个例子中,shared-data 是一个 volume,类型为 emptyDir。它被定义在 Pod 的 spec.volumes 中,然后被两个容器通过 volumeMounts 挂载。

2. volumeMount

volumeMount 是容器级别的资源,用于将 Pod 中定义的 volume 挂载到容器的文件系统中。它定义了容器如何访问 volume 中的数据。

特点
  • 挂载路径volumeMount 指定了 volume 在容器中的挂载路径(mountPath),容器可以通过这个路径访问存储卷中的数据。
  • 依赖性volumeMount 依赖于 Pod 中定义的 volume,它只是将 volume 挂载到容器中,而不能独立于 volume 存在。
  • 可选性:容器可以选择是否挂载某个 volume,并且可以挂载多个 volume
示例

在上面的例子中,container1container2 都通过 volumeMountsshared-data 挂载到了 /data 路径:

volumeMounts:
- name: shared-datamountPath: /data

name 必须与 Pod 中定义的 volume 的名称一致,mountPath 是容器中的路径。

3. 区别

特性

volume

volumeMount

作用范围

Pod 级别,定义存储卷,独立于容器存在。

容器级别,将存储卷挂载到容器的文件系统中。

定义位置

在 Pod 的 spec.volumes 中定义。

在容器的 spec.containers.volumeMounts 中定义。

功能

提供存储资源,支持多种类型(如 emptyDirhostPath 等)。

将存储卷挂载到容器的指定路径,容器通过该路径访问存储数据。

共享性

可以被同一个 Pod 中的多个容器共享。

用于将共享的存储卷挂载到容器中,实现容器之间的数据共享。

生命周期

生命周期独立于容器,即使容器被销毁,volume 数据仍然保留(除非是 emptyDir)。

生命周期依赖于容器,容器销毁后挂载关系消失,但存储数据仍然保留在 volume 中。

4. 总结

  • volume 是 Pod 中定义的存储资源,用于提供存储卷。
  • volumeMount 是容器中定义的挂载点,用于将 volume 挂载到容器的文件系统中。
  • 一个 Pod 中可以定义多个 volume,一个容器可以通过多个 volumeMount 挂载多个 volume
  • volumeMountname 必须与 volume 的名称一致,mountPath 是容器中的路径。

通过合理使用 volumevolumeMount,可以实现容器之间的数据共享以及数据的持久化存储。

http://www.xdnf.cn/news/1067.html

相关文章:

  • 【Qt】控件的理解 和 基础控件 QWidget 属性详解(通俗易懂+附源码+思维导图框架)
  • 鸿蒙生态:鸿蒙生态校园行心得
  • 一文详解Pytorch环境搭建:Mac电脑pip安装Pytorch开发环境
  • docker 国内源和常用命令
  • 大模型面经 | 春招、秋招算法面试常考八股文附答案(四)
  • 乐迪电玩发卡查分与控制面板模块逻辑解析
  • MAC系统下完全卸载Android Studio
  • 组网技术-BGP技术,IS-IS协议,VRRP技术
  • 操作系统之shell实现(下)
  • 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。
  • 常用第三方库:dio网络库使用与封装
  • PHP 爬虫如何获取 1688 商品详情(代码示例)
  • 【前端记事】关于electron的入门使用
  • 【C++】vector<bool>特化
  • 外商在国内宣传 活动|发布会|参展 邀请媒体
  • 软件测试之接口测试常见面试
  • 什么是负载均衡?NGINX是如何实现负载均衡的?
  • UML 通信图对象协作:共享汽车系统交互脉络
  • 为什么在TCP层(即传输层)没有解决半包、粘包的问题
  • 技术速递|Agent 模式:对所有用户开放,并支持 MCP
  • 【SF顺丰】顺丰开放平台API对接(注册、API测试篇)
  • V5验证官网滑块验证码WSS协议逆向算法分析
  • vue vite开发时保留console.log打包完后依然想保留某个文件夹下的console.log方便以后的观察
  • C语言实现堆(优先队列)详解
  • 【Easylive】手动实现分布式事务解决方案流程解析
  • Java转Go日记(四):socket编程
  • STM32之DHT11温湿度传感器---附代码
  • vue3性能优化
  • 【数据结构_12】优先级队列
  • 深度学习3.5 图像分类数据集