如何在kubernetes客户端中使用Watcher?

时间:2019-04-22 11:44:30

标签: c# kubernetes .net-core

我正在使用kubernetes client for C#

我遇到了一个问题,在40-50分钟后,控制台应用程序继续工作,但未注册任何事件。那是因为Watcher即将到期。因此,我发现可以将timeoutSeconds用于所使用的方法-WatchObjectAsync。我更改了代码-为int.MaxValue添加了timeoutSeconds

    var path = $"api/v1/watch/secrets";
    _secretWatcher = await client.WatchObjectAsync<V1Secret>(
        timeoutSeconds: int.MaxValue,
        path: path, 
        onEvent: new Action<WatchEventType, V1Secret>(DoSmthWithEvent));

但是问题仍然存在。但是现在发生在1.5到2个小时之后。

因此,我希望控制台应用程序始终运行,并对kubernetes中的对象更改做出反应。

我的问题是-如何正确使用WatchObjectAsync或替代方法?有时我应该在Watcher中重新创建_secretWatcher对象吗?如果是这样,那么为什么参数timeoutSeconds存在?

其他信息:

  • 根据this issue,手表需要绕成一圈。
  • 我尝试在onClosed回调中重新创建监视程序-正常工作。还是更好地使用while循环?

0 个答案:

没有答案