kubectl 输出中的静默警告

dhe*_*and 8 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
Run Code Online (Sandbox Code Playgroud)

Kubernetes 1.19 似乎出现了这些警告。

aci*_*uji 4

要在上一个答案的基础上添加,您可能还想将 stderr 输出重定向到null device. 但这并不理想,因为它将处理所有 stderr,而不仅仅是警告。

kubectl get pod 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

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

这里最好的办法是重定向stderrstdout然后用 grep 过滤它。

kubectl get pod 2>&1 | grep -i -v "Warn" | grep -i -v "Deprecat" 
Run Code Online (Sandbox Code Playgroud)