PS:最近在重构公司的业务容器化平台,记录一块。关于容器日志的,kubernetes python API本身提供了日志流式数据,在以前的版本是不会输出新数据的,后续版本进行了改进。
直接上代码
瓶前端路由块
<代码类="语言python "> #路由器 ”“”获取项目pod的日志”“ @api_cluster_pod.route ('/& lt; env>/& lt; cluster_name>/舱/& lt; pod_name>/日志) @env_rules def api_cluster_pod_log (env cluster_name pod_name): ”“查看pod的日志”“” tail_lines=request.values。(“tail_lines”, 1000年) 名称空间=request.values。get("名称空间”、“”) #生成配置对象 试一试: cluster_config=ClusterConfig ( env=env, cluster_name=cluster_name, 名称空间=名称空间 ) 除了例外e: 返回jsonify (dict类型( 代码=5000, 消息='获取集群接口时未找到对应条目,信息:{0}的.format (str (e)) )) 试一试: 能够=Pod (cluster_config) resp=(stream_with_context(能够响应。get_pod_log (pod_name tail_lines)), mimetype=" text/plain”) 返回职责 除了例外e: 返回jsonify (dict类型( 代码=7000, 消息=str (e) )代码>
瓶后端代码块
<代码类="语言python "> #后台功能 豆荚类: … def get_pod_log(自我、pod_name tail_lines=100): ”“” 获取pod的日志 :param tail_lines: #显示最后多少行 返回: ”“” 试一试: #流荚日志 流=self.cluster.api.read_namespaced_pod_log ( pod_name, self.cluster_config.namespace, 遵循=True, _preload_content=False, tail_lines=tail_lines) .stream () 返回流 除了ApiException e: 如果e。状态==404: 记录器。异常(“日志不是基金Podname: {0}“.format (pod_name)) 提高PodNotFund(“获取日志时,未找到此舱:{0}“.format (pod_name)) 如果e。状态==400: 提高PodNotFund(“容器并未创建成功,请联系运维人员进行排查。”) e 除了例外e: 记录器。异常(“日志失败:{0}“.format (str (e))) e 代码> >之前