3

K8s:通过 kubectl 插件 kubectl-tree 查看API对象层级关系

 1 year ago
source link: https://liruilongs.github.io/2023/01/09/%E5%BE%85%E5%8F%91%E5%B8%83/%E5%85%B3%E4%BA%8EKubernetes-%E4%B8%AD-%E9%80%9A%E8%BF%87-kubectl-%E6%8F%92%E4%BB%B6-kubectl-tree-%E6%9F%A5%E7%9C%8B%E5%AF%B9%E8%B1%A1%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

K8s:通过 kubectl 插件 kubectl-tree 查看API对象层级关系

我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 ——赫尔曼·黑塞《德米安》


  • 分享一个小工具 kubectl-tree,用于查看 k8s API 对象层级关系
  • 比如对于有状态应用来讲,可以看到Deployment --> ReplicaSet --> Pod 的构成关系
  • 博文内容涉及:tree 插件的安装以及使用。
  • 理解不足小伙伴帮忙指正

我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 ——赫尔曼·黑塞《德米安》


有时候我们希望可以看到,k8s 中 有状态应用、无状态应用和 pod 的所有关系,但是往往需要多条命名才可以实现,其实通过 kubectl-tree 插件,可以很轻松的做到。

kubectl-tree 一个 kubectl 插件,它用于探索 Kubernetes 对象之间的所有权利关系。

在这里插入图片描述

在这里插入图片描述

如果安装了 krew插件管理器,可以通过下面的方式,前提是你有科学上网

kubectl krew install tree
kubectl tree --help

如果没有,那可以通过 浏览器下载下面的二进制安装包

┌──[[email protected]]-[~/ansible/krew]
└─$wget https://github.com/ahmetb/kubectl-tree/releases/download/v0.4.3/kubectl-tree_v0.4.3_linux_amd64.tar.gz

然后配置为 kubectl 插件

┌──[[email protected]]-[~/ansible/krew]
└─$tar -zxvf kubectl-tree_v0.4.3_linux_amd64.tar.gz
LICENSE
kubectl-tree
┌──[[email protected]]-[~/ansible/krew]
└─$mv kubectl-tree /usr/local/bin
┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree --version
kubectl version v0.4.3

查看依赖关系

在这里插入图片描述

在这里插入图片描述

无状态应用关系查看

┌──[[email protected]]-[~/ansible/krew]
└─$kubectl get deployments.apps -n awx
NAME READY UP-TO-DATE AVAILABLE AGE
awx-demo 1/1 1 1 85d
awx-operator-controller-manager 1/1 1 1 85d
┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree deployments awx-demo -n awx
NAMESPACE NAME READY REASON AGE
awx Deployment/awx-demo - 85d
awx └─ReplicaSet/awx-demo-65d9bf775b - 85d
awx └─Pod/awx-demo-65d9bf775b-hc58x True 85d

可以看到,无状态应用由 Deployment、 ReplicaSet,Pod 三个资源对象构成

┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree deployments awx-operator-controller-manager -n awx
NAMESPACE NAME READY REASON AGE
awx Deployment/awx-operator-controller-manager - 85d
awx └─ReplicaSet/awx-operator-controller-manager-79ff9599d8 - 85d
awx └─Pod/awx-operator-controller-manager-79ff9599d8-m7t8k True 85d

多副本的情况

┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree deployments liruilong
NAMESPACE NAME READY REASON AGE
liruilong-topo-namespace Deployment/liruilong - 12d
liruilong-topo-namespace └─ReplicaSet/liruilong-744498fcbd - 12d
liruilong-topo-namespace ├─Pod/liruilong-744498fcbd-48t6z False 7d10h
liruilong-topo-namespace └─Pod/liruilong-744498fcbd-4bmf4 True 6d1h
┌──[[email protected]]-[~/ansible/krew]
└─$

Service 关系查看

┌──[[email protected]]-[~/ansible/krew]
└─$kubectl get services -n awx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
awx-demo-postgres-13 ClusterIP None <none> 5432/TCP 85d
awx-demo-service NodePort 10.104.176.210 <none> 80:30066/TCP 85d
awx-operator-controller-manager-metrics-service ClusterIP 10.108.71.67 <none> 8443/TCP 85d

Service 由 Service、EndpointSlice 构成,这里如果是 1.21 之前的版本,看到的应该是 Endpoints,而不是 EndpointSlice

┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree svc awx-demo-service -n awx
NAMESPACE NAME READY REASON AGE
awx Service/awx-demo-service - 85d
awx └─EndpointSlice/awx-demo-service-6gs4d - 85d
┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree svc awx-demo-postgres-13 -n awx
NAMESPACE NAME READY REASON AGE
awx Service/awx-demo-postgres-13 - 85d
awx └─EndpointSlice/awx-demo-postgres-13-4tc87 - 85d
┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree svc awx-operator-controller-manager-metrics-service -n awx
NAMESPACE NAME READY REASON AGE
awx Service/awx-operator-controller-manager-metrics-service - 85d
awx └─EndpointSlice/awx-operator-controller-manager-metrics-service-7wtml - 85d

有状态应用关系查看

┌──[[email protected]]-[~/ansible/krew]
└─$kubectl get -n awx statefulsets.apps
NAME READY AGE
awx-demo-postgres-13 1/1 85d
web 0/3 30d

有状态应用由 statefulsets、ControllerRevision、Pod 构成

┌──[[email protected]]-[~/ansible/krew]
└─$kubectl tree statefulsets awx-demo-postgres-13 -n awx
NAMESPACE NAME READY REASON AGE
awx StatefulSet/awx-demo-postgres-13 - 85d
awx ├─ControllerRevision/awx-demo-postgres-13-85958bcbcd - 85d
awx └─Pod/awx-demo-postgres-13-0 True 85d
┌──[[email protected]]-[~/ansible/krew]
└─$


https://github.com/ahmetb/kubectl-tree


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK