k8s≥1.18版本查看yaml取消显示manageFields字段的方法

问题描述

当k8s版本≥1.18时,通过kubectl get <resources> -oyaml查看资源的yaml配置信息时,会有一个manageFields字段,影响对配置的阅读,如下:

yaml-1

问题原因

这是之前一个叫做 “Server-side Apply” 的功能,在 1.18.0 版本中,功能由 Alpha 进入到了 Beta,也在 Api-Server 中默认打开,而这些奇怪的字段就叫做 “managedFields” 。 如果实在是不想有这些字段,可以在 Api-Server 配置中 Feature-gate 将这个功能关掉 (字段名字就叫做 “Server-side Apply” )。

Server side Apply:Server side Apply协助用户、控制器通过声明式配置的方式管理他们的资源。它发送完整描述的目标(A fully specified intent), 声明式地创建和/或修改 对象

具体可以参考官方文档:https://kubernetes.io/zh/docs/reference/using-api/server-side-apply/

解决方法

在kube-apiserver的配置中,设置ServerSideApply=false即可

例如,如果是rancher的集群,编辑cluster.yaml文件,在如下位置添加这个配置

1
2
3
kube-api:
extra_args:
feature-gates: ServerSideApply=false

等待集群更新完之后,重建工作负载,manageFields配置就不会再显示了

yaml-2