如何用kubectl原生方式排除last-applied-configuration注解?
过滤kubectl yaml输出中的last-applied-configuration注解(原生方法)
当然有kubectl原生的实现方式,不需要依赖任何外部工具,主要是利用kubectl内置的Go模板功能来过滤掉目标注解:
单资源过滤
直接执行以下命令,替换<资源类型>和<资源名称>为你的实际内容:
kubectl get <资源类型> <资源名称> -o go-template='{{- $annots := .metadata.annotations }}{{- if $annots }}{{- delete $annots "kubectl.kubernetes.io/last-applied-configuration" }}{{- end }}{{- . | toYaml }}'
这个命令的逻辑是:先获取资源的注解集合,若存在则删除指定的kubectl.kubernetes.io/last-applied-configuration键,最后将处理后的资源对象转为YAML格式输出。
批量资源过滤
如果需要一次性处理多个资源(比如所有Pod),可以用带遍历的模板:
kubectl get pods --all-namespaces -o go-template='{{- range .items }}{{- $annots := .metadata.annotations }}{{- if $annots }}{{- delete $annots "kubectl.kubernetes.io/last-applied-configuration" }}{{- end }}{{- . | toYaml }}---{{- end }}'
遍历所有目标资源,每个资源的YAML输出后用---分隔,保持多文档YAML的规范格式。
需要注意的是,Go模板的delete函数会直接修改输出处理阶段的临时注解对象,不会对集群中的实际资源造成任何改动,完全安全。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

