如何通过python客户端获取kubernetes中pod的日志和描述

新手上路,请多包涵

我想通过 python 客户端获取日志并描述我在 kubernetes 中的 pod。在kubernetes集群中我们可以使用

kubectl logs <NAME_OF_POD>
kubectl describe pods <NAME_OF_pod>

但是我想在 kubernetes 的 python 客户端中使用这些命令。我该怎么办?

原文由 check nova 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

您可以使用以下代码读取 Pod 的日志:

 from kubernetes.client.rest import ApiException
from kubernetes import client, config

config.load_kube_config()
pod_name = "counter"
try:
    api_instance = client.CoreV1Api()
    api_response = api_instance.read_namespaced_pod_log(name=pod_name, namespace='default')
    print(api_response)
except ApiException as e:
    print('Found exception in reading the logs')

上面的代码非常适合获取 pod 的日志。

要获得 kubectl describe pod 的输出,提供的所有信息都在 read_namespaced_pod 函数中。它具有您需要的所有信息,并且您可以按需要的任何方式使用这些信息。您可以编辑以上代码并使用 read_namespaced_pod 代替 read_namespaced_pod_log 来获取信息。

原文由 Prafull Ladha 发布,翻译遵循 CC BY-SA 4.0 许可协议

这些答案都没有返回命名空间 pod 的事件,这是在运行时默认给出的 kubectl describe 。要获取给定 pod 的命名空间事件,请运行:

 from kubernetes import client, config
config.load_kube_config()
v1 = client.CoreV1Api()
out = kube.core_api.list_namespaced_event(namespace, field_selector=f'involvedObject.name={pod_name}')

其中 namespace 是感兴趣的命名空间, pod_name 是您感兴趣的 pod。

当生成一个 pod 并为用户提供一个关于 pod 当前状况的合理状态报告时,我需要这个,以及调试 pod 的状态(如果它未能超出“待处理”)。

原文由 Alex Kaszynski 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题