我想知道是否有可能连续将日志从HTTP请求打印到Kubernetes API。我正在使用python来查询K8S API ......就像
一样 r = requests.get(self.url + "namespaces/" + namespace + "/pods/" + pod_name + "/log", cert=(self.cert, self.key), verify=False)
我希望follow=true
参数可能与tailLines=100
一起使用,使其更像tail
命令。
当我使用follow
参数时,请求正在收集响应,但我不知道如何将其输出转发到控制台。
有可能吗?
答案 0 :(得分:2)
我遗漏的是stream=True
参数中的request.get
,它允许遍历响应内容,因此我的代码如下所示:
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")
答案 1 :(得分:-1)
你几乎就在那里。我想你想要的是以下内容:
<form name="form" method="POST" action="/api/search.php" class="search-form" id="search-form">
<input type="radio" name="role" data-role="wanted_specialty" value="1" class="radio-btn"><span class="overlay"></span> 1</label>
<input type="radio" name="role" data-role="wanted_specialty" value="2" class="radio-btn"><span class="overlay"></span> 2</label>
<input type="radio" name="role" data-role="wanted_specialty" value="3" class="radio-btn"><span class="overlay"></span> 3</label>
</form>
var form = document.querySelector('.search-form');
form.addEventListener('mousedown',function(e){
// DO SOMETHING
});
您可以使用以下命令获取pod名称:
kubectl logs -f <your-pod-name> --tail=100
希望有所帮助