python kubernetes手表pod日志不起作用

BLa*_*ang 4 python kubernetes

尝试使用 python kubernetes API 来流式传输 kubernetes pod 日志的输出。(最终目标是通过 websocket 流输出日志)

基于合并到 python kubernetes 模块的这个PR,我认为 watch 可以与 read_namespaced_pod_log 一起使用?

v1 = client.CoreV1Api()
w = watch.Watch()
for e in w.stream(v1.read_namespaced_pod_log, name=pod, namespace=namespace, follow=True, tail_lines=1, limit_bytes=560, _preload_content=False):
   print(e)
Run Code Online (Sandbox Code Playgroud)

但是我收到下面的错误,我是否错过了需要传递给观看的东西?或 read_namespaced_pod_log?

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.7/site-packages/kubernetes/watch/watch.py", line 132, in stream
    resp = func(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/kubernetes/client/apis/core_v1_api.py", line 18538, in read_namespaced_pod_log
    (data) = self.read_namespaced_pod_log_with_http_info(name, namespace, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/kubernetes/client/apis/core_v1_api.py", line 18576, in read_namespaced_pod_log_with_http_info
    " to method read_namespaced_pod_log" % key
TypeError: Got an unexpected keyword argument 'watch' to method read_namespaced_pod_log
Run Code Online (Sandbox Code Playgroud)

Mit*_*tar 6

你应该这样做:

v1 = client.CoreV1Api()
w = Watch()
for e in w.stream(v1.read_namespaced_pod_log, name=pod, namespace=namespace):
    print(e)
Run Code Online (Sandbox Code Playgroud)