日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kubernetes log 流式数据处理

發布時間:2025/6/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kubernetes log 流式数据处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PS: 最近在重構公司的業務容器化平臺,記錄一塊。關于容器日志的, kubernetes python API本身提供了日志流式數據,在以前的版本是不會輸出新數據的,后續版本進行了改進。

直接上代碼

Flask 前端路由塊

# Router """獲取項目pod的日志""" @api_cluster_pod.route('/<env>/<cluster_name>/pod/<pod_name>/log') @env_rules def api_cluster_pod_log(env, cluster_name, pod_name):"""查看pod的log"""tail_lines = request.values.get("tail_lines", 1000)namespace = request.values.get("namespace", "")# 生成Config Objecttry:cluster_config = ClusterConfig(env=env,cluster_name=cluster_name,namespace=namespace)except Exception as e:return jsonify(dict(code=5000,message='獲取集群接口時未找到對應條目, 信息:{0}'.format(str(e))))try:poder = Pod( cluster_config)resp = Response(stream_with_context(poder.get_pod_log(pod_name, tail_lines)), mimetype="text/plain")return respexcept Exception as e:return jsonify(dict(code=7000,message=str(e)))

Flask 后端代碼塊

# 后臺功能 class Pod:...def get_pod_log(self, pod_name, tail_lines=100):"""獲取pod的日志:param tail_lines: # 顯示最后多少行:return:"""try:# stream pod logstreams = self.cluster.api.read_namespaced_pod_log(pod_name,self.cluster_config.namespace,follow=True,_preload_content=False,tail_lines=tail_lines).stream()return streamsexcept ApiException as e:if e.status == 404:logger.exception("Get Log not fund Podname: {0}".format(pod_name))raise PodNotFund("獲取日志時,未找到此pod: {0}".format(pod_name))if e.status == 400:raise PodNotFund("容器并未創建成功,請聯系運維人員進行排查。")raise eexcept Exception as e:logger.exception("Get Log Fail: {0}".format(str(e)))raise e

HTML

<!DOCTYPE> <html> <head><title>Flushed ajax test</title><meta charset="UTF-8" /><script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script><style>#log-container {height: 800px;/*width: 800px;*/overflow-x: scroll;padding: 10px;}.logs {background-color: black;color: aliceblue;font-size: 18px;}</style> </head> <body> <div id="log-container"><pre class="logs"></pre> </div><script type="text/javascript">var last_response_len = false;var logs = $("#log-container");$.ajax('http://localhost/api/pre/ops-test/pod/ops-test-1211763235-jfbst/log?tail_lines=100', {xhrFields: {onprogress: function(e){var this_response, response = e.currentTarget.response;if(last_response_len === false){this_response = response;last_response_len = response.length;}else{this_response = response.substring(last_response_len);last_response_len = response.length;}// console.log(this_response);// 接收服務端的實時日志并添加到HTML頁面中$("#log-container pre").append(this_response);// 滾動條滾動到最低部$("#log-container").scrollTop($("#log-container pre").height() - $("#log-container").height() + 10);}}}).done(function(data){console.log('Complete response = ' + data);}).fail(function(data){console.log('Error: ', data);});console.log('Request Sent'); </script> </body> </html>

其它

我們應用是前后端分離的,把html里面的核心代碼放置VUE里面就可以了。

效果圖

日志是流式的,如果Container有日志,則窗口會運態更新。

總結

以上是生活随笔為你收集整理的kubernetes log 流式数据处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。