分享一个开源小工具 kubectl-tree,用于查看 k8s API 对象层级关系。
比如对于无状态应用来讲,可以看到Deployment --> ReplicaSet --> Pod 的构成关系。
采用二进制离线方式安装:
1、下载二进制安装包
wget https://github.com/ahmetb/kubectl-tree/releases/download/v0.4.3/kubectl-tree_v0.4.3_linux_amd64.tar.gz
2、解压
tar -zxvf kubectl-tree_v0.4.3_linux_amd64.tar.gz
3、移动相关文件到 /usr/local/bin 目录
mv kubectl-tree LICENSE /usr/local/bin
4、查看tree版本
root@master1:~# kubectl tree --version
kubectl version v0.4.3
root@master1:~#
5、查看当前k8s集群所有deployment
root@master1:~# kgd -A
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
alertmanager alertmanager 1/1 1 1 40d
grafana grafata 1/1 1 1 51d
kube-system calico-kube-controllers 1/1 1 1 102d
kube-system coredns 2/2 2 2 102d
kubesphere-system extensions-museum 1/1 1 1 102d
kubesphere-system ks-apiserver 1/1 1 1 102d
kubesphere-system ks-console 1/1 1 1 102d
kubesphere-system ks-controller-manager 1/1 1 1 102d
prometheus prometheus 1/1 1 1 51d
root@master1:~#
查看grafana Deployment的层级关系
root@master1:~# kubectl tree deployment grafata -n grafana
W0915 13:45:19.120124 287730 warnings.go:70] v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice
NAMESPACE NAME READY REASON AGE
grafana Deployment/grafata - 51d
grafana ├─ReplicaSet/grafata-6b75fbc674 - 51d
grafana └─ReplicaSet/grafata-d85c5cd6d - 41d
grafana └─Pod/grafata-d85c5cd6d-njndq True 9d
root@master1:~#
查看grafana service的层级关系
root@master1:~# kubectl get service -A | grep grafana
grafana grafana-service NodePort 10.98.60.113 <none> 80:30012/TCP 101d
root@master1:~# kubectl tree svc grafana-service -n grafana
W0915 13:53:23.860417 294848 warnings.go:70] v1 Endpoints is deprecated in v1.33+; use discovery.k8s.io/v1 EndpointSlice
NAMESPACE NAME READY REASON AGE
grafana Service/grafana-service - 101d
grafana └─EndpointSlice/grafana-service-5zftp - 101d