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

k8s热更新-subPath 不支持热更新

文章目录

  • k8s热更新-subPath 不支持热更新
    • 背景
    • subPath 不支持热更新
    • 1. 为什么 subPath 不支持热更新?
    • 2. 挂载整个目录为何支持热更新?
    • 使用demo举例:挂载整个目录(不使用 subPath)

k8s热更新-subPath 不支持热更新

背景

在 Kubernetes 中,Pod 可以通过 Volume 将宿主机(或 PV/PVC)中的文件/目录挂载到容器内。
subPath 是一个常用的功能,允许你只挂载 Volume 的某一个子目录或文件到容器的指定路径。

使用 subPath 存在一个容易踩坑的问题:热更新(文件在宿主或 PVC 中发生变化,容器内不会感知)。实在有 subPath 的场景,通过重启 Pod 方式实现刷新挂载

subPath 不支持热更新

官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#mounted-configmaps-are-updated-automatically

  • 只有目录挂载才支持热更新,subPath 方式热更新无效。

将热更新配置与非热更新配置分离到不同 ConfigMap,是推荐的 Kubernetes 最佳运维实践。

  • 主配置还是 subPath 就好,防止热更新误操作和触发程序 reload。

1. 为什么 subPath 不支持热更新?

  • subPath 文件挂载时,Kubernetes 会在 Pod 启动时,将指定的 ConfigMap/Secret 文件拷贝一份到容器的本地文件系统(通常是临时目录)。

  • 这个本地物理文件和 ConfigMap/Secret 之间不再有链接,后者发生内容变化不会影响这份副本。

  • 目的是防止多个 subPath 指向同一份数据时的可疑行为,且保证容器文本独立性。

  • 所以无论你 kubectl apply 或 helm upgrade 更新 ConfigMap,subPath 文件内容都不会热更新,除非重启/重建 Pod。

2. 挂载整个目录为何支持热更新?

mountPath:批量挂载目录,支持自动更新(需配合应用或工具)。

  • 如果你把整个目录 mount 到容器(不用 subPath),其实是把一个由 kubelet 管理的 “投影目录” 映射进容器。
  • ConfigMap/Secret 变更时,kubelet 会自动在该目录生成新版本临时文件,并切换符号链接,所有容器中读取到的就是最新内容。

使用demo举例:挂载整个目录(不使用 subPath)

ConfigMap 可作为 volume 挂载到容器
优点:挂载目录内的任何变化都能同步给容器(支持热更新)。

apiVersion: v1
kind: Pod
metadata:name: configmap-pod
spec:containers:- name: mycontainerimage: nginxvolumeMounts:- name: config-volumemountPath: /etc/config          # 目录volumes:- name: config-volumeconfigMap:name: my-configmap             # 使用的 ConfigMap 名
http://www.xdnf.cn/news/11859.html

相关文章:

  • 网络安全中网络诈骗的攻防博弈
  • label-studio 标注实体识别
  • 第三篇:MCP协议深度实践——从理论到生产级AI智能体系统
  • go的工具库:github.com/expr-lang/expr
  • 杰发科技AC7840——Timer修改重装载值
  • 深入解析Java17核心新特性(增强NullPointerException、强封装 JDK 内部 API、伪随机数生成器增强)
  • LVDS与GMSL和FPD-Link之间的关系
  • CppCon 2015 学习:All Your Tests are Terrible
  • Unity 中实现可翻页的 PageView
  • 【游戏科学】游戏开发中数学算法的核心与应用
  • Opencl
  • superior哥AI系列第9期:高效训练与部署:从实验室到生产环境
  • 【Linux】centos软件安装
  • ios版本的Tiktok二次安装不上,提示:Unable to Install “TikTok”
  • Android apk装机编译类型: verify、speed-profile, speed与启动耗时
  • 【学习记录】如何使用 Python 提取 PDF 文件中的内容
  • 聚沙成塔,三步成书:GitBook极简入门教程
  • 近期调试有感
  • 快速掌握MCP——Spring AI MCP包教包会
  • 01串(二进制串)与集合之间存在天然的对应关系 ← bitset
  • django ssh登录 并执行命令
  • 3373. 连接两棵树后最大目标节点数目 II
  • [论文阅读]PPT: Backdoor Attacks on Pre-trained Models via Poisoned Prompt Tuning
  • 【推荐算法】Embedding+MLP:TensorFlow实现经典深度学习推荐模型详解
  • Openlayers从入门到入坟
  • 第五期书生大模型实战营-《L1G1-玩转书生大模型 API 之 Browser-Use 实践》
  • OpenCV 键盘响应来切换图像
  • c++中char *p指针指向字符串输出问题
  • 2025政务服务便民热线创新发展会议顺利召开,张晨博士受邀分享
  • MYSQL(二) ---MySQL 8.4 新特性与变量变更