在 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;凭借其出色的泛化能力、…