如何使用Kubeclient通过标签筛选批量删除Kubernetes资源
按标签批量删除ConfigMap的实现方法
你可以通过以下两种方式实现与kubectl标签筛选删除一致的效果:
方法1:调用delete_collection方法(推荐)
Kubeclient原生提供了集合级别的删除接口,直接传入label_selector参数即可批量匹配删除对应资源,底层逻辑和kubectl命令完全一致,代码示例如下:
# k 为 Kubeclient::Client 实例 k.delete_config_map_collection(label_selector: "application=my-app")
label_selector参数的语法和kubectl的-l参数完全兼容,支持多标签组合、不等于匹配、标签存在性判断等常用筛选规则。
方法2:先查询再遍历删除(兼容旧版本)
如果你使用的Kubeclient版本较低,不支持集合删除方法,也可以先按标签筛选出所有符合要求的ConfigMap,再逐个调用删除接口:
# 按标签筛选目标ConfigMap target_cms = k.get_config_maps(label_selector: "application=my-app") # 遍历执行删除 target_cms.each do |cm| k.delete_config_map(cm.metadata.name, cm.metadata.namespace) end
如果需要限定命名空间范围,可在查询和删除时补充namespace参数即可。
内容的提问来源于stack exchange,提问作者Richard-Degenne
相关产品推荐
相关产品推荐

