使用 YAML 文件,如何優雅地刪除 k8s 資源?


在 Kubernetes 中,刪除資源是日常運維中不可避免的操作。如果你習慣了使用 kubectl createkubectl apply 來創建和更新資源,那么你可能也會想知道如何用同樣基于文件的方式來刪除它們。

雖然你總是可以用 kubectl delete deployment <name> 這種方式來刪除,但基于文件的刪除方法能更好地保持聲明式管理的原則,特別是在 GitOps 實踐中,它能確保集群的狀態與你的代碼倉庫保持一致。

本文將介紹兩種主流的、基于文件來刪除 Kubernetes 資源的方法。

方法一:最直接的方式 —— kubectl delete -f

這是最常用、最簡單、也最安全的方式。它的工作原理非常直接:讀取你指定的 YAML 文件,然后刪除文件中定義的所有資源。

如果你有一個名為 my-app.yaml 的文件,其中定義了一個 Deployment 和一個 Service

# my-app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: my-app-deployment
spec:# ...---
apiVersion: v1
kind: Service
metadata:name: my-app-service
spec:# ...

要刪除這兩個資源,你只需運行一個命令:

kubectl delete -f my-app.yaml

優點:

  • 安全:你明確知道自己要刪除哪些資源,因為它完全依賴于你指定的文件。
  • 簡單:命令清晰,易于記憶和使用。
  • 高效:可以一次性刪除文件中定義的所有資源。

方法二:最靈活的方式 —— kubectl apply --prune

這是一個更高級、更強大的命令,它不只是簡單地刪除,而是用于同步集群狀態與本地配置文件

--prune(裁剪)標志的作用是:它會刪除那些在你的本地文件中不存在,但在集群中存在在你的管理范圍之內的資源。

這個方法通常用于以下場景:你將所有資源定義都放在一個目錄里,當你想刪除某個資源時,你只需從這個目錄中移除對應的 YAML 文件,然后運行 apply --prune 命令。

命令格式:

kubectl apply --prune -f <file_or_directory> -l <selector_label>

需要注意的關鍵點:

  • --prune 必須與 -f(文件/目錄)和 -l(標簽選擇器)一起使用。
  • -l 標簽選擇器至關重要! 它定義了 kubectl 應該管理的資源“邊界”。沒有這個邊界,--prune 可能會誤刪整個命名空間中的所有資源。

一個簡單的例子:

假設你的所有應用資源都帶有一個 app=my-app 的標簽。

  1. 最初,你的文件目錄中有 deployment.yamlservice.yaml,都帶有 app=my-app 標簽。你使用 kubectl apply -f . 部署了它們。
  2. 現在,你決定不再需要 service.yaml。你從目錄中刪除了這個文件。
  3. 為了讓集群狀態與你的目錄同步,你運行:
kubectl apply --prune -f . -l app=my-app

kubectl 會比較集群狀態和你的文件目錄:

  • 它發現 deployment 在文件中,所以會保留它。
  • 它發現 service 不在文件中,但它帶有 app=my-app 標簽,所以 kubectl 會自動將其刪除

總結與選擇

特性kubectl delete -fkubectl apply --prune
工作原理直接刪除文件中定義的資源比較文件與集群狀態,移除多余資源
主要用途手動或腳本化地刪除特定資源保持集群與 Git 倉庫的完全同步
風險低,你明確指定了要刪除什么較高,如果標簽選擇器不當,可能誤刪

對于日常的、簡單的刪除操作,kubectl delete -f 是最安全和最推薦的選擇。如果你正在實踐 GitOps,并希望通過提交和刪除 Git 倉庫中的文件來自動化集群狀態的變更,那么 kubectl apply --prune 將是你的強大工具。

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

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

相關文章

如何將游戲和軟件移動到另一個驅動器或外部磁盤中

您的C盤存儲空間是否不足&#xff0c;或者您不小心在錯誤的驅動器中安裝了游戲或應用程序。那么使用這個簡單的技巧&#xff0c;您可以輕松的將游戲或應用程序移動到另一個分區或磁盤中。1、找到準備移動的軟件&#xff0c;選擇路徑并復制&#xff1a;2、打開記事本&#xff0c…

賦能汽車電子智造:全星QMS打造品質檢驗、稽核與客訴管理閉環?——全星質量管理軟件系統

全星QMS&#xff1a;驅動汽車電子質量卓越與商業成功的核心引擎 在智能汽車時代&#xff0c;汽車電子的質量已成為產品安全、性能與品牌信譽的核心。面對復雜的供應鏈、嚴苛的IATF 16949/ISO 26262標準及降本增效的壓力&#xff0c;您的企業需要一位數字化戰略伙伴。全星質量管…

【數據結構C語言】順序表

1. 線性表 線性表&#xff08;linear list&#xff09;是n個具有相同特性的數據元素的有限序列。 線性表是一種在實際中廣泛使用的數據結構&#xff0c;常見的線性表&#xff1a;順序表、鏈表、棧、隊列、字符串...線性表在邏輯上是線性結構&#xff0c;也就說是連續的一條直線…

AI 學習路徑-記錄分享

目錄推薦學習資源延申閱讀推薦學習資源 3Blue1Brown的個人空間-3Blue1Brown個人主頁-嗶哩嗶哩視頻 這個簡短的課程有助于了解AI的本質&#xff0c;邁入學習AI的第一步。 歡迎加入 &#x1f917; AI Agents 課程 - Hugging Face Agents Course AI Agent&#xff0c;當前火爆…

Windows Server 2019 上安裝 Ubuntu 20.04 的幾種方式

docker desktop不支持Windows server 2019&#xff0c;所以Windows Server 2019 上安裝 Ubuntu 20.04 變成一種可行的途徑。記錄一下其中可用的幾種方式&#xff1a;&#x1f5c2; 常見安裝方式對比方式原理難度適用場景優點缺點Hyper?V 虛擬機&#xff08;推薦&#xff09;利…

當Trae遇上高德MCP:一次國慶武漢之旅的AI技術實踐

當Trae遇上高德MCP&#xff1a;一次國慶武漢之旅的AI技術實踐 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般絢爛的技術棧中&#xff0c;我是那個永不停歇的色彩收集者。 &#x1f98b; 每一個優化都是我培育的花朵&#xff0c;每一個特性都是我…

設計模式:抽象工廠模式

簡介 抽象工廠模式(Abstract Factory Pattern)是一種創建型設計模式,它提供了一種封裝一組具有共同主題或相關依賴關系的獨立工廠的方式,而無需指定它們的具體類。核心思想是創建一系列相關或相互依賴的對象家族(產品族),可以將客戶端與具體產品的創建過程解耦,使得客…

知行——同為科技24周年慶典

在宜人的金秋時節&#xff0c;北京同為科技有限公司于2025年8月23日&#xff0c;天津基地與江西同時隆重舉辦了以“知行”為主題的周年慶祝活動&#xff0c;回顧企業24年來的奮斗歷程&#xff0c;凝聚“同為人”力量&#xff0c;展望更加光明的未來。當天&#xff0c;創始人周慧…

RK android14 定制ES8388音頻編解碼器雙MIC雙OUT(1)

文章目錄 前言 一、適配內容概述 二、適配步驟 1. HAL層配置修改 1.1 添加聲卡名稱識別 (`audio_hw.c`) 1.2 注冊聲卡路由配置 (`config_list.h`) 1.3 定義路由配置表 (`es8388_config.h`) 2. 內核設備樹修改 2.1 禁用默認聲卡 2.2 配置ES8388聲卡節點 2.3 配置I2C和Codec節點 …

Oracle跟蹤及分析方法

1、SQL_TRACE 通過設置 SQL_TRACE 可以啟用或禁用 SQL 跟蹤工具&#xff0c;設置 SQL_TRACE 為 true 可以收集信息用于性能優化或問題診斷&#xff1b; 特別注意&#xff1a; 全局啟用 SQL 跟蹤可能會對性能產生嚴重影響。 可以使用 ALTER SESSION 跟蹤特定會話。 Oracle 已…

第三階段數據庫-9:循環,編號,游標,分頁

1_sql中的循環&#xff0c;編號&#xff08;1&#xff09;sql 中沒有for循環&#xff0c;只有while循環&#xff0c;begin end 中間的就是while執行的語句&#xff0c;相當于{}declare i int; set i1; --begin end 中間的就是while執行的語句&#xff0c;相當于{} while(i<…

Redis高級篇:在Nginx、Redis、Tomcat(JVM)各環節添加緩存以實現多級緩存

摘要&#xff1a;多級緩存通過在 Nginx、Redis、Tomcat&#xff08;JVM&#xff09;各環節添加緩存&#xff0c;解決傳統緩存中 Tomcat 瓶頸與 Redis 失效沖擊數據庫問題。利用 Caffeine 實現 JVM 緩存&#xff0c;OpenResty 結合 Lua 處理 Nginx 層邏輯&#xff0c;通過 Redis…

9 設計網絡爬蟲

前言 我們重點討論網絡爬蟲的設計&#xff0c; 這也是一個有趣且經典的系統設計面試問題。 爬蟲開發的復雜性取決于我們想要支持的爬蟲規模。它可以是一個小的學校項目&#xff0c;只需要幾小時就可以完成&#xff0c;也可以是一個需要專業開發團隊持續優化的巨型項目。因此&…

面試:計算機網絡

一、網絡分層與URL流程 1. 模型掌握TCP/IP四層模型&#xff1a;層級功能 & 協議應用層提供應用接口&#xff08;HTTP、DNS、FTP&#xff09;傳輸層端到端傳輸&#xff08;TCP可靠、UDP快速&#xff09;網絡層路由與尋址&#xff08;IP、ICMP&#xff09;網絡接口層鏈路傳輸…

lanczos算法的核心——Ritz向量的計算(主要思想為反向映射)

在 Lanczos 算法中&#xff0c;“將得到的特征向量映射回原始空間&#xff08;即乘以V&#xff09;得到的近似特征向量” 這一步&#xff0c;通常是指在三對角矩陣&#xff08;T&#xff09;的特征向量求解完成后&#xff0c;將其轉換回原始矩陣&#xff08;A&#xff09;的特征…

Verilog功能模塊--SPI主機和從機(03)--SPI從機設計思路與代碼解析

前言 上一篇文章介紹了Verilog功能模塊——SPI主機&#xff0c;包括主機設計思路與使用方法。 本文則用純Verilog設計了功能完整的4線SPI從機&#xff0c;與網上一些以高頻率clk時鐘模擬從機不同&#xff0c;本文中的SPI從機工作時鐘來源于主機的sclk&#xff0c;符合SPI同步…

【Big Data】Hadoop YARN 大數據集群的 “資源管家”

Apache Hadoop YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Hadoop生態系統中的核心資源管理框架&#xff0c;通過解耦資源管理和任務調度&#xff0c;提供了一個通用的分布式計算資源調度平臺&#xff0c;使Hadoop從單一的MapReduce框架演進為支持多種計算…

【計組】總線與IO

總線同步定時方式采用公共時鐘信號協調發送方和接收方的傳送異步定時方式采用握手信號來實現定時控制不互鎖對于主設備&#xff1a;請求&#xff0c;隔一段時間自動撤銷請求對于從設備&#xff1a;回答&#xff0c;隔一段時間自動撤銷回答半互鎖對于主設備&#xff1a;請求&…

技術速遞|Model Context Protocol (MCP) 支持已上線 JetBrains、Eclipse 和 Xcode

模型上下文協議&#xff08;MCP&#xff09;與 GitHub Copilot 的集成現已全面支持 JetBrains、Eclipse 和 Xcode&#xff01;MCP 使 GitHub Copilot 能夠與外部工具和數據源集成&#xff0c;從而提升更深入的上下文感知能力和編碼智能。 借助 JetBrains、Eclipse 和 Xcode 中…

深入淺出理解支持向量機:從原理到應用,解鎖分類算法的核心密碼

????在機器學習的廣闊領域中&#xff0c;分類算法猶如一個個精準的 “決策官”&#xff0c;幫助我們從海量數據中挖掘規律、做出判斷。而在眾多分類算法里&#xff0c;支持向量機&#xff08;Support Vector Machine&#xff0c;簡稱 SVM&#xff09;憑借其出色的泛化能力、…