2 min read | by Jordi Prats
Some kubernetes objects creates and manages other kubernetes objects in order to provide it's functionality. For example, the Deployment object creates a ReplicaSet that in turn creates the desired Pod objects. We can always track down this relationship using kubectl describe but using the tree krew plugin we can see the relationship in a visual way. We can install it like so:
$ kubectl krew install tree
Once installed we can see the relationships of any objects by name, for example:
$ kubectl tree deploy pet2cattle
NAMESPACE NAME READY REASON AGE
kube-system Deployment/pet2cattle - 173d
kube-system ├─ReplicaSet/pet2cattle-6459fd5cfd - 7d14h
kube-system ├─ReplicaSet/pet2cattle-6958646f9 - 9d
kube-system ├─ReplicaSet/pet2cattle-69f9f4c65d - 12d
kube-system ├─ReplicaSet/pet2cattle-6f6b9648ff - 18d
kube-system ├─ReplicaSet/pet2cattle-786fd7c9d6 - 11d
kube-system ├─ReplicaSet/pet2cattle-798578ccc8 - 4d1h
kube-system │ └─Pod/pet2cattle-798578ccc8-49pnx True 4d1h
kube-system ├─ReplicaSet/pet2cattle-7dbbd9bf7f - 11d
kube-system ├─ReplicaSet/pet2cattle-7f9895c54f - 18d
kube-system ├─ReplicaSet/pet2cattle-946bcdb57 - 7d14h
kube-system ├─ReplicaSet/pet2cattle-bf7575fbd - 13d
kube-system └─ReplicaSet/pet2cattle-f94d49cb4 - 18d
Here we can see that only one of the ReplicaSet has a pod, that's because all the other are revisions:
$ kubectl describe ReplicaSet/pet2cattle-798578ccc8 | grep revision
deployment.kubernetes.io/revision: 124
$ kubectl describe ReplicaSet/pet2cattle-946bcdb57 | grep revision
deployment.kubernetes.io/revision: 123
$ kubectl describe ReplicaSet/pet2cattle-6459fd5cfd | grep revision
deployment.kubernetes.io/revision: 122
The old ReplicaSet are scaled down to 0 pods:
$ kubectl describe ReplicaSet/pet2cattle-f94d49cb4 | grep ^Repli
Replicas: 0 current / 0 desired
So just the active ReplicaSet has an active Pod on this moment.
We can also visualize other objects such as Service:
$ kubectl tree svc pet2cattle
NAMESPACE NAME READY REASON AGE
kube-system Service/pet2cattle - 173d
kube-system └─EndpointSlice/pet2cattle-hzjn7 - 173d
Or an Ingress, on this example we can see the Certificate objects that it's using:
$ kubectl tree ingresses.v1.networking.k8s.io pet2cattle-https
NAMESPACE NAME READY REASON AGE
kube-system Ingress/pet2cattle-https - 173d
kube-system └─Certificate/k3s-p2c True Ready 173d
kube-system ├─CertificateRequest/k3s-p2c-7zl4g True Issued 116d
kube-system │ └─Order/k3s-p2c-7zl4g-3064267605 - 116d
kube-system ├─CertificateRequest/k3s-p2c-98vv5 True Issued 37h
kube-system │ └─Order/k3s-p2c-98vv5-3758948428 - 37h
kube-system ├─CertificateRequest/k3s-p2c-flsnr True Issued 173d
kube-system │ └─Order/k3s-p2c-flsnr-424107949 - 173d
kube-system └─CertificateRequest/k3s-p2c-wwq4n True Issued 63d
kube-system └─Order/k3s-p2c-wwq4n-3758948428 - 63d
Posted on 14/06/2021