糖呀糖啦~Pleiades
首页
归档
关于
友链
切换模式
返回顶部
首页
技术实践
书斋絮语
晴天札记
糖呀糖啦~Pleiades
首页
技术实践
书斋絮语
晴天札记
首页
归档
关于
友链
【Pod】Pod 容器共享 Volume
技术实践
·
17 天前
糖呀糖 xyz
同一个 Pod 中的多个容器能够共享 Pod 级别的存储卷 Volume。Volume 可以被定义为各种类型,多个容器各自进行挂载操作,将一个 Volume 挂载为容器内部需要的目录  # 多容器协作实践解析 Pod 内包含两个容器:tomcat 和 busybox,在 Pod 级别设置 Volume"apps-logs",用于 tomcat 向其中写日志文件,busybox 读日志文件 ```yaml apiVersion: v1 kind: Pod metadata: name: volume-pod spec: containers: - name: tomcat # 第一个容器(主容器)tomcat image: tomcat # 使用 tomcat 镜像 ports: - containerPort: 8080 # 容器内部端口 volumeMounts: - name: app-logs # 挂载的卷名称 mountPath: /usr/local/tomcat/logs # 挂载到容器内的路径(tomecat 的日志目录 - name: busybox # 第二个容器(sidecar 容器)busybox image: busybox # 使用 busybox 镜像 command: ["sh", "-c", "tail -f /logs/catalina*.log"] # 持续监控日志文件 volumeMounts: - name: app-logs # 挂载同名卷 mountPath: /logs # 挂载到容器内的路径 volumes: - name: app-logs # 卷名称 emptyDir: {} # 使用 emptyDir 类型的卷 ``` ## 配置的主要功能和特点 ### 多容器协作 - 一个 Pod 中运行两个容器:tomcat 和 busybox - 两个容器通过共享卷进行通信 ### 日志收集方案 - tomcat 容器产生日志 - busybox 容器实时读取这些日志 ### 数据共享 - 使用 `emptyDir` 卷类型 - 这是一个临时存储,如果 Pod 删除 数据会丢失 - 两个容器可以同时访问这个共享存储 ### 实际应用场景 - 典型的 日志收集模式 - 用于监控、调试或日志转发 ## 角色定位(读写关系如何确定的) 发出一个疑问,为什么是 tomcat 写入,busybox 读取,为什么不能是 busybox 写入,tomcat 读取。 是因为 tomcat 是一个 Web 应用服务器,在运行的过程中自然会产生日志文件(如 catalina.ouot、localhost_access_log 等),这是 tomcat 的固有功能 busybox 在这个例子中,使用 `tail -f` 命令,这是一个读取命令,用于实时查看文件内容。 实际上从技术上讲确实可以反过来,但这不符合容器的设计目的: - tomcat 容器的主要职责是运行 Web 应用并自动生成日志 - busybox 容器在这里扮演一个工具容器的角色,用于监控日志 这种设计遵循 “单一职责原则”: - tomcat 容器专注于运行 web 应用 - busybox 容器专注于日志监控 - 每个容器都在做最适合他的事情
Kubernetes
取消回复
提交评论
糖呀糖 xyz
我们谈论生活,讨论技术,借由文字,抵达心灵。
热门文章
【Kubernetes】第一个实例 - Java Web 应用
Obsidian 迁移全记录(又名:纯小白的闭坑指南)
使用宝塔面板对网站、数据库等进行定时备份到腾讯云 COS 对象存储
2025 年
在细雨中呼喊,在困顿中挣扎
Ubuntu 22.04 server 安装教程
Debian 12.2 安装方法
最新评论
tl.s: 很实用 🦆🦆
tl.s: 绘图很清晰,图示质量很高
tl.s: 写的很详细,赞👍
Deep Router: 大佬好强!!!
tls: 写的很详细,很清晰!
tl.s: 讲的很清楚,语言组织很好 🦆🦆🦆🦆🦆🦆🦆🦆🦆🦆
tl.s: 好棒🦆🦆🦆🦆🦆🦆🦆🦆🦆🦆🦆
热门标签
Kubernetes
Ubuntu
Linux
Python3
生活
2025
Debian
技术实践
在细雨中呼喊
读书笔记
笔记软件
Obsidian
2024
openEuler
Kuboard
粤ICP备2024349207号