k8s patch方法更新deployment和replace方法更新deployment的區別是什么

在Kubernetes中,patchreplace 方法用于更新資源(如 Deployment),但它們的實現方式和適用場景有顯著差異。以下是兩者的核心區別:


1. 更新范圍

  • replace 方法
    完全替換整個資源配置。需要用戶提供完整的資源定義(YAML/JSON),Kubernetes 會用這個新配置覆蓋舊配置。

    • 類似操作:類似于刪除舊資源后重新創建新資源,但保留資源名稱和 UID。
    • 風險:如果提供的配置遺漏了某些字段(如未包含replicas),這些字段會被重置為默認值(如replicas: 1),可能導致意外行為。
  • patch 方法
    僅更新指定的字段,無需提交完整配置。用戶只需提供需要修改的部分(如鏡像版本),Kubernetes 會合并變更到現有配置。

    • 優勢:減少傳輸數據量,避免因遺漏字段導致配置錯誤。

2. 沖突處理

  • replace 方法
    依賴樂觀鎖機制resourceVersion)。如果資源在本地獲取后被其他人修改過(導致 resourceVersion 不匹配),replace 會失敗并提示版本沖突,需手動解決。

    • 強制覆蓋:可通過 kubectl replace --force 刪除并重建資源,但會導致服務短暫中斷。
  • patch 方法
    沖突概率較低,因為僅修改指定字段。即使其他字段被更新,只要目標字段未被修改,patch 仍可成功。但若多個用戶同時 patch 同一字段,仍可能沖突。


3. 合并策略

  • replace 方法
    無合并邏輯,直接用新配置替換舊配置。

  • patch 方法
    支持多種合并策略(需指定類型):

    • JSON Patch:通過 JSON 格式的操作指令(如 addremovereplace)精確修改字段。
    • JSON Merge Patch:類似 Git 的合并,但無法處理列表(會直接覆蓋列表)。
    • Strategic Merge Patch(Kubernetes 特有):智能合并列表。例如,更新 Deployment 的容器鏡像時,能通過 name 匹配容器,而非依賴列表順序,避免因容器順序變化導致的錯誤。

4. 典型用例

  • replace 的適用場景

    • 確保資源配置與本地文件完全一致(如 GitOps 中同步全量配置)。
    • 需要重置某些字段到默認值(需顯式設置字段)。
  • patch 的適用場景

    • 快速更新單一字段(如鏡像版本、副本數)。
    • 自動化腳本中高效更新資源,減少網絡開銷。

操作示例

使用 replace 更新鏡像
# 1. 獲取當前配置
kubectl get deployment/my-app -o yaml > my-app.yaml# 2. 修改鏡像版本(vim my-app.yaml → 修改 `image: nginx:1.19`)# 3. 提交替換
kubectl replace -f my-app.yaml
使用 patch 更新鏡像(Strategic Merge Patch)
kubectl patch deployment/my-app --type strategic --patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image": "nginx:1.19"}]}}}
}'

總結

特性replacepatch
數據量傳輸完整配置僅傳輸變更部分
沖突風險高(依賴最新 resourceVersion低(僅目標字段沖突時失敗)
適用場景全量同步配置高效局部更新
列表處理直接覆蓋支持智能合并(如 Strategic Merge)

根據需求選擇:需精確控制全量配置時用 replace,高效局部更新用 patch

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76534.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76534.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76534.shtml

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

相關文章

解決安卓手機WebView無法直接預覽PDF的問題(使用PDF.js方案)

在移動端開發中,通過 webview 組件直接加載PDF文件時,不同平臺的表現差異較大: iOS & 部分安卓瀏覽器:可正常內嵌預覽(依賴系統內置PDF渲染能力) 大多數安卓設備:由于缺乏原生PDF插件&…

基于javaweb的SSM+Maven機房管理系統設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

7-6 混合類型數據格式化輸入

本題要求編寫程序,順序讀入浮點數1、整數、字符、浮點數2,再按照字符、整數、浮點數1、浮點數2的順序輸出。 輸入格式: 輸入在一行中順序給出浮點數1、整數、字符、浮點數2,其間以1個空格分隔。 輸出格式: 在一行中…

【GPIO8個函數解釋】

函數解釋 void GPIO_DeInit(GPIO_TypeDef* GPIOx); 作用:將指定GPIO端口的所有寄存器恢復為默認值。這會清除之前對該端口的所有配置,使其回到初始狀態。使用方法:傳入要復位的GPIO端口指針,例如GPIOA、GPIOB等。 void GPIO_AF…

將圖表和表格導出為PDF的功能

<template><div><divref"pdfContent"style"position: relative; width: 800px; margin: 0 auto"><!-- ECharts 圖表 --><div id"chart" style"width: 100%; height: 400px" /><!-- Element UI 表格 …

C++中的鏈表操作

在C中&#xff0c;鏈表是一種常見的數據結構&#xff0c;它由一系列節點組成&#xff0c;每個節點包含數據部分和指向下一個節點的指針。C標準庫&#xff08;STL&#xff09;中提供了std::list和std::forward_list兩種鏈表實現&#xff0c;分別對應雙向鏈表和單向鏈表。此外&am…

蛋白設計 ProteinMPNN

傳統方法的局限性是什么&#xff1f; 傳統蛋白質設計方法的局限性&#xff1a; 基于物理的傳統方法&#xff0c;例如羅塞塔&#xff0c;面臨計算難度&#xff0c;因為需要計算所有可能結構的能量&#xff0c;包括不需要的寡聚態和聚合態。 設計目標與顯式優化之間缺乏一致性通…

有哪些開源的視頻生成模型

1. 阿里巴巴通義萬相2.1&#xff08;WanX 2.1&#xff09; 技術架構&#xff1a;基于Diffusion Transformer&#xff08;DiT&#xff09;架構&#xff0c;結合自研的高效變分自編碼器&#xff08;VAE&#xff09;和Flow Matching訓練方案&#xff0c;支持時空上下文建模。參數…

【動態規劃】最長上升子序列模板

最長上升子序列 題目傳送門 一、題目描述 給定一個長度為 N 的數列&#xff0c;求數值嚴格單調遞增的子序列的長度最長是多少。 輸入格式 第一行包含整數 N。 第二行包含 N 個整數&#xff0c;表示完整序列。 輸出格式 輸出一個整數&#xff0c;表示最大長度。 數據范圍 …

LeetCode 891 -- 貢獻度思想

題目描述 子序列寬度之和 思路 ref 代碼 相似題 子數組范圍和 acwing

化工行業如何通過定制化工作流自動化實現25-30%成本優化?

作者&#xff1a;Mihir Jhaveri 編譯&#xff1a;李升偉 發布日期&#xff1a;2024年10月30日 在化工生產領域&#xff0c;數字化轉型正以顛覆性態勢重塑產業格局。通過集成定制化軟件、ERP系統、工業物聯網&#xff08;IIoT&#xff09;傳感網絡、機器人流程自動化&#xff0…

Compose組件轉換XML布局

文章目錄 學習JetPack Compose資源前言&#xff1a;預覽界面的實現Compose組件的布局管理一、Row和Colum組件&#xff08;LinearLayout&#xff09;LinearLayout&#xff08;垂直方向 → Column&#xff09;LinearLayout&#xff08;水平方向 → Row&#xff09; 二、相對布局 …

RAG測試數據集資源

一、通用問答基準數據集 HotpotQA 特點:包含11萬+多跳問答對最佳用途:測試復雜推理能力數據示例:{"question": "Were Scott Derrickson and Ed Wood of the same nationality?","answer": "Yes, both are American" }MS MARCO 特點…

快速掌握MCP——Spring AI MCP包教包會

最近幾個月AI的發展非常快&#xff0c;各種大模型、智能體、AI名詞和技術和框架層出不窮&#xff0c;作為一個業余小紅書博主的我最近總刷到MCP這個關鍵字&#xff0c;看著有點高級我也來學習一下。 1.SpringAI與functionCall簡單回顧 前幾個月我曾寫過兩篇關于SpringAI的基礎…

學習筆記--(6)

import numpy as np import matplotlib.pyplot as plt from scipy.special import erfc# 設置參數 rho 0.7798 z0 4.25 # 確保使用大寫 Z0&#xff0c;與定義一致def calculate_tau(z, z_prime, rho, s_values):return np.log(rho * z * z_prime * s_values / 2)# 定義 chi_…

【AI4CODE】5 Trae 錘一個基于百度Amis的Crud應用

【AI4CODE】目錄 【AI4CODE】1 Trae CN 錐安裝配置與遷移 【AI4CODE】2 Trae 錘一個 To-Do-List 【AI4CODE】3 Trae 錘一個貪吃蛇的小游戲 【AI4CODE】4 Trae 錘一個數據搬運工的小應用 1 百度 Amis 簡介 百度 Amis 是一個低代碼前端框架&#xff0c;由百度開源。它通過 J…

認識 Promise

認識 Promise 前言&#xff1a;為什么會出現 Promise&#xff1f; 最常見的一個場景就是 ajax 請求&#xff0c;通俗來說&#xff0c;由于網速的不同&#xff0c;可能你得到返回值的時間也是不同的&#xff0c;這個時候我們就需要等待&#xff0c;結果出來了之后才知道怎么樣…

純c++實現transformer 訓練+推理

項目地址 https://github.com/freelw/cpp-transformer C 實現的 Transformer 這是一個無需依賴特殊庫的 Transformer 的 C 實現&#xff0c;涵蓋了訓練與推理功能。 本項目使用C復刻了《Dive into Deep Learning》中關于 Transformer 的第 11 章11.7小節點內容。構建了一個英…

Go 語言規范學習(7)

文章目錄 Built-in functionsAppending to and copying slicesClearCloseManipulating complex numbersDeletion of map elementsLength and capacityMaking slices, maps and channelsMin and maxAllocationHandling panicsBootstrapping PackagesSource file organizationPac…

Python Cookbook-5.1 對字典排序

任務 你想對字典排序。這可能意味著需要先根據字典的鍵排序&#xff0c;然后再讓對應值也處于同樣的順序。 解決方案 最簡單的方法可以通過這樣的描述來概括:先將鍵排序&#xff0c;然后由此選出對應值: def sortedDictValues(adict):keys adict.keys()keys.sort()return …