如何通过API获取与Pod关联的事件?

时间:2015-10-01 18:39:23

标签: kubernetes

当我执行kubectl describe <pod>时,底部有一个“事件”部分,显示与该窗格相关的事件。例如,一个包含Reason“failedScheduling”的事件,其中包含“因故障原因而无法获得原因的PodFitsResources”和/或其他原因

如何查询API以返回事件列表?

如果我拨打/api/v1/namespaces/<ns>/pods/<pod_name>,则不会返回任何事件。如果我尝试/api/v1/events端点,我可以指定labelSelector参数,但是pod的名称不是Event的标签,尽管它位于object.involvedObject.name字段中。 / p>

我可以请求整个事件流并过滤掉客户端感兴趣的几个事件,但这看起来有点过分。 kubectl能够做到这一点,所以我认为必须有某种方式让我失踪。

感谢。

2 个答案:

答案 0 :(得分:5)

我认为事件支持涉及对象种类和名称

的fieldSelector

您还可以将kubectl上的详细级别调高至8,以查看网络跟踪以查看其正在执行的操作

答案 1 :(得分:0)

如果您仍然想知道kubectl如何与describe命令一起获取事件,请查看以下内容:

https://github.com/kubernetes/kubernetes/blob/b6a0718858876bbf8cedaeeb47e6de7e650a6c5b/pkg/kubectl/describe/versioned/describe.go#L242

如果您看到发生了什么事,那就是他们首先获取所请求资源的详细信息(请参阅https://github.com/kubernetes/kubernetes/blob/b6a0718858876bbf8cedaeeb47e6de7e650a6c5b/pkg/kubectl/describe/versioned/describe.go#L235),然后他们从该名称空间获取所有事件,并过滤出所请求资源的事件。参见同一链接中的第242行。

因此,他们没有使用其他未公开的API或其他方式,您认为过大的是他们在做什么。