Kubectl的输出中出现静音警告

时间:2020-11-02 17:07:01

标签: kubernetes kubectl

是否可以使来自kubectl的警告消息静音,例如以下显示的弃用通知?

Warning: rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
Warning: rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
Warning: admissionregistration.k8s.io/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io/v1 ValidatingWebhookConfiguration
Warning: admissionregistration.k8s.io/v1beta1 MutatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io/v1 MutatingWebhookConfiguration

这些警告似乎是在Kubernetes 1.19上发生的。

2 个答案:

答案 0 :(得分:0)

要添加上一个答案,您可能还需要将stderr输出重定向到null device。尽管它不理想,因为它会处置所有stderr,而不仅仅是警告。

kubectl get pod 2> /dev/null

null device是一个丢弃所有写入数据的设备文件。空设备通常用于处理进程中不需要的输出流,或用作输入流的便捷空文件。

最好的做法是将stderr重定向到stdout,然后用grep过滤。

kubectl get pod 2>&1 | grep -i -v "Warn" | grep -i -v "Deprecat" 

答案 1 :(得分:0)

如果您想了解有关此主题的更多详细信息,请参阅来自 Kubernetes 的 blog post,其中包含有关此主题的更多详细信息。

答案是 kubectl 本身并没有提供消除这些警告的方法。一般来说,kubectl 会在 1.19 及更高版本中显示这些弃用警告。

client-go 为 Kubernetes CLI 的开发人员提供了一种handle these warnings in particular ways的方式,但 kubectl 选择始终显示这些警告。

一般来说,除非这些警告会导致现有进程出现问题,否则最好显示这些警告。如果存在一些问题(例如日志被这些警告弄得乱七八糟),提出一些像@acid_fuji 提到的自定义脚本可能会很有用。