我正在探索(无证?)events() API https://github.com/fabric8io/kubernetes-client/blob/master/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/KubernetesClient.java#L104 in Fabric8 的 Kubernetes 客户端项目 https://github.com/fabric8io/kubernetes-client.
具体来说,我发现我可以执行以下操作:
client.events().inAnyNamespace().watch(new Watcher<Something>() {
@Override
public final void eventReceived(final Action action, final Something something) {
}
@Override
public final void onClose(final KubernetesClientException kubernetesClientException) {
if (kubernetesClientException != null) {
// log? throw?
}
}
});
允许的值是多少something
and Something
为了发生一些有用的事情?我假设他们是supposed是 Pod、服务等,但我不确定。
Watcher的唯一类型参数声明为<T> https://github.com/fabric8io/kubernetes-client/blob/master/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/Watcher.java#L20,所以看来我可以创建一个新的Watcher<Integer>
,但我愿意赌永远不会跟注的钱。这表明实践中实际上存在一个界限<T>
,但我不知道它是什么,或者如果是的话为什么会被省略。
如果我必须猜测,我会从参数名称中猜测,resource
,它会是这样的T extends
Resource https://github.com/fabric8io/kubernetes-client/blob/master/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/Resource.java<?, ?>
但同样,这只是一个猜测。
感谢您的任何指示,特别是我确信我错过的其他文档。
更新#1:从源代码中敲打,我可以看到唯一一个地方Watcher.Action
's eventReceived()
方法被称为强制有效负载被视为HasMetadata object https://github.com/fabric8io/kubernetes-client/blob/master/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/WatchConnectionManager.java#L207-L217。也许这就是我的答案?