kubernetes v1.18后yaml文件中产生managedFields字段

kubernetes v1.18后yaml文件中产生managedFields字段

managedFields字段是kubernetes v1.18后默认启用的Server-Side-Apply特性产生的.

相比于此前的Client-Side-Apply(会产生kubectl.kubernetes.io/last-applied-configuration字段), Server-Side-Apply对字段的管理进行了更细粒度的控制, 不同的Field Manager可以管理资源清单中不同的字段, 修改其他Field Manager管理的字段会产生冲突(可以强制提交), 能够更直观地跟踪不同Field Manager对资源的字段变更. 常见的Field Manager有kubectl和kube-controller-manager.

Server-Side-Apply对于资源的apply和update以及其中的冲突合并权限转移有一套复杂的机制, 具体参见: 官方文档

可以通过在kube-apiserver启动参数中追加 --feature-gates=ServerSideApply=false关闭该特性, 但社区不建议这么做.

由于通过kubectl查看资源yaml或json时, managedFields字段占用篇幅通常都比较大, 因此可以借助kubectl-neat插件去除这些通常不关心的字段:

kubectl get pod mypod -o yaml | kubectl neat
kubectl get pod mypod -oyaml | kubectl neat -o json

也可以使用我们自己的kude工具实现该功能:

kude yn pod mypod
kude jn pod mypod

这两个工具都会去除很多"多余"字段. 如果只想去除managedFields字段, 可以借助jq和yq工具:

kubectl get pod mypod -o yaml | yq d - metadata.managedFields
kubectl get pod mypod -o json | jq -rM 'del(.metadata.managedFields)'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值