diff --git a/pkg/kubectl/resource_filter.go b/pkg/kubectl/resource_filter.go index 8ca31d83ac3..cd6470ba23e 100644 --- a/pkg/kubectl/resource_filter.go +++ b/pkg/kubectl/resource_filter.go @@ -58,6 +58,17 @@ func filterPods(obj runtime.Object, options PrintOptions) bool { // Filter loops through a collection of FilterFuncs until it finds one that can filter the given resource func (f Filters) Filter(obj runtime.Object, opts *PrintOptions) (bool, error) { + // check if the object is unstructured. If so, let's attempt to convert it to a type we can understand + // before apply filter func. + switch obj.(type) { + case *runtime.UnstructuredList, *runtime.Unstructured, *runtime.Unknown: + if objBytes, err := runtime.Encode(api.Codecs.LegacyCodec(), obj); err == nil { + if decodedObj, err := runtime.Decode(api.Codecs.UniversalDecoder(), objBytes); err == nil { + obj = decodedObj + } + } + } + for _, filter := range f { if ok := filter(obj, *opts); ok { return true, nil