kubectl plugin to browse Kubernetes object hierarchies as a tree 🎄 (star the repo if you are using)
Go
3,443
143 commits
updated Sep 28, 2026
A kubectl plugin to explore ownership relationships between Kubernetes objects
through ownersReferences on the objects.
The kubectl lineage plugin is very similar to kubectl tree, but it
understands
logical relationships between some API objects without needing ownerReferences.
Use krew plugin manager to install:
kubectl krew install tree
kubectl tree --help
Example (Deployment):

Example (Knative Service):

Example (Agones Fleet):

By default, the plugin searches only namespaced objects in the same namespace as the specified object.
-A, --all-namespaces: Search namespaced and non-namespaced objects in all namespaces.
-n, --namespace: Namespace scope for the CLI request.
-c, --color: Control color output. Supported values are always, never, and auto (default).
-l, --selector: Selector (label query) to filter on. Supports equality (=, ==, !=), set-based (in, notin), and existence operators. Examples:
-l key1=value1,key2=value2 (equality)-l "env in (prod,staging)" (set-based)-l "tier=frontend,env!=test" (mixed)This helps reduce workload and data volume when working with large clusters.
--condition-types: Comma-separated list of condition types to check. Default: Ready. Example: Ready,Processed,Scheduled.
--api-groups: Comma-separated list of API groups to include in the query. When not set, all API groups are included. Supports globs. Example: --api-groups=core,*cluster.x-k8s.io,!addons.*,*.cert-manager.io.
--resources: Comma-separated list of resource types to include in the query. When not set, all resources are included. Supports globs. Example: --resources=deployments,rs,pods.
Resource filters accept kind, singular, plural, and short names. For example, ReplicaSets, replicasets, replicaset, and rs all match the same resource type.
Using --resources and --api-groups to define what APIs and resources are included or excluded while building the tree can significantly reduce workload and data usage in large clusters.
If an intermediate owner resource is filtered out, traversal stops at that point and child resources below it will be missing, even if the leaf resource or API would otherwise match.
For example, using --resources=deployments,pods will return nothing because replicasets are not included and pods are not directly owned by deployments.
kubectl tree --api-groups '*.custom.api,*cluster.x-k8s.io' --resources '!customresource' cluster my-cluster
Ahmet Alp Balkan @ahmetb.
Special acknowledgement: This tool is heavily inspired by @nimakaviani's knative-inspect as it's a generalized version of it.
Apache 2.0. See LICENSE.
This is not an official Google project.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
(top 24 of 74)
515 followers · starred Jan 2020
284 followers · starred Oct 2021
306 followers · starred Jan 2020
225 followers · starred Jan 2020
kubectl plugin to browse Kubernetes object hierarchies as a tree 🎄 (star the repo if you are using)
Go
3,443
143 commits
updated Sep 28, 2026
A kubectl plugin to explore ownership relationships between Kubernetes objects
through ownersReferences on the objects.
The kubectl lineage plugin is very similar to kubectl tree, but it
understands
logical relationships between some API objects without needing ownerReferences.
Use krew plugin manager to install:
kubectl krew install tree
kubectl tree --help
Example (Deployment):

Example (Knative Service):

Example (Agones Fleet):

By default, the plugin searches only namespaced objects in the same namespace as the specified object.
-A, --all-namespaces: Search namespaced and non-namespaced objects in all namespaces.
-n, --namespace: Namespace scope for the CLI request.
-c, --color: Control color output. Supported values are always, never, and auto (default).
-l, --selector: Selector (label query) to filter on. Supports equality (=, ==, !=), set-based (in, notin), and existence operators. Examples:
-l key1=value1,key2=value2 (equality)-l "env in (prod,staging)" (set-based)-l "tier=frontend,env!=test" (mixed)This helps reduce workload and data volume when working with large clusters.
--condition-types: Comma-separated list of condition types to check. Default: Ready. Example: Ready,Processed,Scheduled.
--api-groups: Comma-separated list of API groups to include in the query. When not set, all API groups are included. Supports globs. Example: --api-groups=core,*cluster.x-k8s.io,!addons.*,*.cert-manager.io.
--resources: Comma-separated list of resource types to include in the query. When not set, all resources are included. Supports globs. Example: --resources=deployments,rs,pods.
Resource filters accept kind, singular, plural, and short names. For example, ReplicaSets, replicasets, replicaset, and rs all match the same resource type.
Using --resources and --api-groups to define what APIs and resources are included or excluded while building the tree can significantly reduce workload and data usage in large clusters.
If an intermediate owner resource is filtered out, traversal stops at that point and child resources below it will be missing, even if the leaf resource or API would otherwise match.
For example, using --resources=deployments,pods will return nothing because replicasets are not included and pods are not directly owned by deployments.
kubectl tree --api-groups '*.custom.api,*cluster.x-k8s.io' --resources '!customresource' cluster my-cluster
Ahmet Alp Balkan @ahmetb.
Special acknowledgement: This tool is heavily inspired by @nimakaviani's knative-inspect as it's a generalized version of it.
Apache 2.0. See LICENSE.
This is not an official Google project.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
(top 24 of 74)
515 followers · starred Jan 2020
284 followers · starred Oct 2021
306 followers · starred Jan 2020
225 followers · starred Jan 2020