# Kubespy：实时查看 Kubernetes 资源

原文：[kubespy: tools for observing Kubernetes resources in real time](https://github.com/pulumi/kubespy)

一个 `Pod` 启动时会发生些什么？一个 `Service` 拿到公共 IP 之前又会干点啥？`Deployment` 的状态是怎么切换的？

`kubespy` 是个小工具，能够轻松的实时查看 Kubernetes 集群里的资源变化。这一工具源自于 [Pulumi CLI](https://www.pulumi.com/kubernetes/) ，其中对 Kubernetes Deployment 的预测做出了一些常识。可以在任何时机运行 `kubespy`，它会持续对 Kubernetes 资源进行监控和报告，直到杀掉进程为止。

## 例如

`kubespy trace deployment nginx` 会对集群中名为 `nginx` 的 `Deployment` 对象进行跟踪，并将状态信息进行聚合，生成较高级的概要，并且进行实时更新。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1746322692182/f0eb7c2c-22af-4d52-8c7a-17d2031fd9d6.gif align="center")

`kubespy status v1 Pod nginx` 会等待创建一个叫做 `nginx` 的 `Pod`，然后持续刷新其状态，并用高亮语法的 JSON 形式展现出来。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1746322696765/2ea3bc78-766e-4f49-a8ce-9cc1e835d285.gif align="center")

## 安装

获取[最新版本](https://github.com/pulumi/kubespy/releases)，重命名为 `kubespy`，`chmod -x kubespy` 并将其拷贝到可执行路径之中（例如 `/usr/local/bin`）。

或者

安装 [Go](https://golang.org/) 1.11 以上版本，然后运行：

```bash
export GO111MODULE=on

# If $GOBIN is not on your path, you'll need to install the library elsewhere.
go install github.com/pulumi/kubespy
```

两种方式都能够完成安装。

## 用法

`kubespy` 有三个子命令：

`status <apiVersion> <kind> [<namespace>/]<name>`：实时跟踪任意 Kubernetes 对象的 `.status` 字段，并用 JSON Diff 的方式进行展示。

`changes <apiVersion> <kind> [<namespace>/]<name>`：实时获取一个 Kubernetes 资源的所有字段的所有变化，用 JSON Diff 进行展示。

`trace <kind> [<namespace>/]<name>`：对复杂 Kubernetes 资源进行跟踪，在整个集群范围内进行聚合，生成汇总信息，并保持实时更新。
