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.pswp.cn/bicheng/83661.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83661.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83661.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分班 - 華為OD統一考試(JavaScript 題解)

華為OD機試題庫《C》限時優惠 9.9 華為OD機試題庫《Python》限時優惠 9.9 華為OD機試題庫《JavaScript》限時優惠 9.9 針對刷題難,效率慢,我們提供一對一算法輔導, 針對個人情況定制化的提高計劃(全稱1V1效率更高)。 看…

【TCP/IP和OSI模型以及區別——理論匯總】

參考小林code和卡爾哥,感恩! 網絡基礎篇 面試官您好!OSI和TCP/IP是網絡通信中兩個關鍵模型,本質都是分層處理數據傳輸,但設計理念和應用場景差異很大。 OSI模型是理論上的七層架構,從下到上依次是物理層…

極客大挑戰 2019 EasySQL 1(萬能賬號密碼,SQL注入,HackBar)

題目 做法 啟動靶機,打開給出的網址 隨便輸點東西進去,測試一下 輸入1、1’、1"判斷SQL語句閉合方式 輸入以上兩個都是以下結果 但是,輸入1’時,出現的是另外結果 輸入1,1"時,SQL語句沒有…

Tauri(2.5.1)+Leptos(0.7.8)開發桌面應用--簡單的工作進度管理

在前期工作(Tauri(2.5.1)Leptos(0.7.8)開發桌面應用--程序啟動界面_tauri 程序啟動畫面-CSDN博客)的基礎上繼續進行自用桌面小程序的開發。為了方便管理工作進度,決定自己造輪子。效果如下: 工作進度管理系統 在編寫程序過程中&am…

java面試 網絡編程與 Java I/O:技術要點解析

java面試 網絡編程與 Java I/O:技術要點解析 網絡編程與 Java I/O:技術要點解析一、TCP 和 UDP 的區別TCP(Transfer Control Protocol)UDP(User Datagram Protocol)TCP 的三次握手與四次揮手 二、Java 的幾…

PhpStorm設置中文

環境信息 系統版本:Windows11 22H2 PhpStorm版本:2025.1.1【Build #PS-251.25410.148】 設置中文 PhpStorm并不需要安裝插件或下載相應的漢化包進行漢化 依次點擊點擊: file或右上角設置按鈕→ 進入Settings→ 找到Appearance & Behav…

【監控】Spring Boot 應用監控

這段配置是 Spring Boot 應用中對 Actuator 和 Micrometer 監控系統的配置,用于將應用的指標暴露給 Prometheus 進行收集。下面我將詳細介紹這種配置方式及其提供的指標。 配置說明 這個配置主要涉及 Spring Boot Actuator 和 Micrometer 兩個核心組件&#xff1a…

學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1]

學習筆記(23): 機器學習之數據預處理Pandas和轉換成張量格式[1] 學習機器學習,需要學習如何預處理原始數據,這里用到pandas,將原始數據轉換為張量格式的數據。 1、安裝pandas pip install pandas 2、寫入和讀取數據 >>創建一個人工…

一臺電腦聯網如何共享另一臺電腦?網線方式

前言 公司內網一個人只能申請一個賬號和一個主機設備;會檢測MAC地址;如果有兩臺設備,另一臺就沒有網;因為是聯想老電腦,共享熱點用不了,但是有一根網線,現在解決網線方式共享網絡; …

Spring Boot 基礎知識全面解析:快速構建企業級應用的核心指南

一、Spring Boot 概述:重新定義 Java 開發 1.1 什么是 Spring Boot? Spring Boot 是基于 Spring 框架的快速開發框架,旨在簡化 Spring 應用的初始搭建及開發過程。它通過 「約定優于配置」(Convention Over Configuration&#…

CentOS-stream-9 Zabbix的安裝與配置

一、Web環境搭建部署Zabbix時,選擇合適的MariaDB、PHP和Nginx版本非常重要,以確保兼容性和最佳性能。以下是建議版本:Zabbix 6.4 MariaDB:官方文檔推薦使用MariaDB 10.3或更高版本。對于CentOS Stream 9,建議使用Maria…

CppCon 2014 學習:Adventures in Updating a Legacy Vintage Codebase

“VINTAGE” 部分是對現實中飛行模擬系統中遺留系統復雜性的描述。以下是對關鍵點的理解與拆解: 飛行模擬系統的背景 多環境、多語言、多硬件: 編程語言: 混用的“遺留語言”:Ada, C, C, Fortran, Jovial, PL/M, Pascal不同語言…

【計算機】計算機存儲器的分類與特性

文章目錄 一、按作用層次分類1. 主存儲器(內存)2. 輔助存儲器(外存)3. 高速緩沖存儲器(Cache) 二、按存儲介質分類1. 半導體存儲器2. 磁存儲技術3. 光存儲發展 三、按存取方式分類1. 隨機存儲器技術細節2. …

Redisson - 實現延遲隊列

Redisson 延遲隊列 Redisson 是基于 Redis 的一款功能強大的 Java 客戶端。它提供了諸如分布式鎖、限流器、阻塞隊列、延遲隊列等高可用、高并發組件。 其中,RDelayedQueue 是對 Redis 數據結構的高階封裝,能讓你將消息延遲一定時間后再進入消費隊列。…

上門服務小程序訂單系統框架設計

一、邏輯分析 上門服務小程序訂單系統主要涉及服務展示、用戶下單、訂單處理、服務人員接單與服務完成反饋等核心流程。 服務展示:不同類型的上門服務(如家政、維修等)需要在小程序中展示詳細信息,包括服務名稱、價格、服務內容介…

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時

Android apk裝機編譯類型: verify、speed-profile, speed與啟動耗時 Dex2oat (dalvik excutable file to optimized art file) ,對 dex 文件進行編譯優化,Android 虛擬機可識別的是dex文件,應用運行過程如果每次都將dex文件加載內存&#xff…

winrm登錄失敗,指定的憑據被服務器拒絕

winrm登錄失敗,指定的憑據被服務器拒絕。 異常提示:the specified credentials were rejected by the server 在windows power shell執行 set-executionpolicy remotesigned winrm quickconfig winrm set winrm/config/service/auth {Basic"true…

Unity3D ET框架游戲腳本系統解析

前言 ET框架在Unity3D中實現的GamePlay腳本系統是一種革命性的、基于ECS(實體-組件-系統)架構的設計,它徹底改變了傳統的基于MonoBehaviour的游戲邏輯編寫方式。其核心思想是追求高性能、高解耦、易熱更新,特別適合大型復雜的網絡…

android與Qt類比

一、概念對應關系 Android RecyclerView 組件類比描述Qt 模型 - 視圖組件Qt 類比描述RecyclerView畫板(容器)QAbstractItemView視圖(展示數據的容器,如列表、表格)RecyclerView.Adapter畫布(數據橋梁&…

Jenkins 2.479.1安裝和郵箱配置教程

1.安裝 在JDK安裝并設置環境變量完成后,下載官網對應的war版本,在對應目錄下打開命令行窗口并輸入 java -jar jenkins.war其余參數感興趣可以自行查閱,這里啟動的 jenkins 服務默認占用8080端口,在瀏覽器輸入 localhost:8080進入…