从Kubernetes api打印日志

2024-09-29 21:37:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有可能将HTTP请求中的日志连续打印到kubernetesapi。我使用python查询k8sapi

r = requests.get(self.url + "namespaces/" + namespace + "/pods/" + pod_name + "/log", cert=(self.cert, self.key), verify=False)

我想使用follow=true参数,可能与tailLines=100一起使用,使其更像tail命令。在

当我使用follow参数时,请求正在收集响应,但我不知道如何将其输出转发到控制台。 有可能吗?在


Tags: nameselfhttpurl参数getcertrequests
2条回答

我缺少的是request.get参数中的stream=True,该参数允许迭代响应内容,因此我的代码如下所示:

import requests

class Logs():
    def __init__(self, url='https://192.168.0.1:6443/api/v1/',
                 cert='./client.crt',
                 key='./client.key'):
        self.url = url
        self.cert = cert
        self.key = key
        requests.packages.urllib3.disable_warnings()

    def get_pod_logs(self, namespace, pod_name):

        params = dict(
            follow="true",
            tailLines="100"
        )

        r = requests.get(self.url + "namespaces/" + namespace + "/pods/" + pod_name + "/log", params=params,
                         cert=(self.cert, self.key), verify=False, stream=True)

        for chunk in r.iter_content(chunk_size=256):
            if chunk:
                print(chunk)

logs = Logs()

logs.get_pod_logs(namespace="my-ns",pod_name="my-pod")

你快到了。我想你想要的是:

kubectl logs -f <your-pod-name>  tail=100

您可以使用以下命令获取机架名称:

^{pr2}$

希望有帮助

相关问题 更多 >

    热门问题