Rancher Web UI 无法查看日志的解决方案

线上生产环境一直使用 Rancher(v2.6.5) 管理集群,在某一次通过 Web 查看 pod 日志时,因为 Rancher 默认查看 30 分钟的日志,而当时服务日志量过大,导致无法查看日志。几番搜索尝试后,发现重启机器(后面发现其实重启 rancher 的 docker 容器即可)可以解决这个问题,但后面某次在使用 kubectl 时又发生了同样的问题。仔细查看发现,出现症状后不只是 Web 无法查看日志,通过命令行 kubectl 命令也无法管理集群,唯一可以执行 kubectl 的地方是 Rancher Web 上面的命令行。因为生产环境不能频繁重启机器,所以觉得这次一定要找到好用的解决方案,好在最后也成功解决。

TL;DR

正文

说来也奇怪,明明测试环境是在生产之后搭建的,结果不知怎的测试环境的 Rancher 版本是 v2.6.3。所以在生产环境出现问题后,测试环境每次操作都小心翼翼的,可是很长时间也没遇到过一样的情况。只能怀疑是新版本 Rancher 引入的 Bug,而且这情况在网上的讨论还很多。还有一个很神奇的地方,就是这个问题是用户相关的。也就是说,之前使用 admin 账户出现了问题,但是之前开的另一个账户还是没有问题的。虽然看上去对解决问题没什么关系,所以只好先整体进行排查。既然确定是版本问题,就去看了眼最近版本的发布日志,发现 v2.6.6 的 Release Note 提到了,v2.6.6 是 v2.6.5 的镜像版本,唯一的区别就是修复了一个在 Rancher 尝试从下游集群读取大体积数据流时出现的性能问题。而相应的,我们就是在读取大量 pod 日志时会导致 Rancher 无法再次读取日志。

抱着试试看的心态升级了 Rancher 的版本,结果问题依旧。只好硬着头皮继续 Google,发现另外的一个 Issue [bug][v2.6.5] Blank is displayed when viewing Pod logs,这个 Issue 里面不止提到了这个问题已经在 v2.6.6 版本中被修复,还提供了一个临时的解决方案。另外这个 Issue 中也提到了,新建用户就能暂时恢复这个问题,也正好和自己这边表现出来的症状一致。于是按照这个 Issue 所说,删除了用户偏好后问题解决。具体操作步骤如下:

  • 通过浏览器地址栏进入 https://{rancher-url}/v1/userpreferences/
  • 点击 self 后面的链接 "…/v1/userpreferences/user-xxxxx",
  • 点击页面右侧操作区域的 Delete
  • 在弹出的浮层中点击 Send Request
  • 重新登录 Rancher

目前来看 v2.6.6 的版本还是彻底解决了这个问题的,这之后已经正常使用了一个月左右,目前病症未复发,先坚守使用 v2.6.6 了。