故障处理

基础

监控和警报:首先,我们需要在Kubernetes集群中设置监控和警报系统,以便能够及时检测和诊断故障。例如,在KDP中我们使用Prometheus和Grafana等监控工具来监视集群中各个组件的运行状态,并设置警报规则,以便在发生故障时及时通知相关人员。

自动恢复:对于没有SPOF的组件,如果它们发生故障,Kubernetes本身可以自动将它们重新调度到可用的节点上。因此,我们可以通过设置Kubernetes的自动伸缩和容错机制来实现自动恢复。例如,我们可以使用Deployment或StatefulSet控制器来部署应用程序,并设置自动重启和故障转移等机制,以确保应用程序的高可用性。

手动干预:如果发生故障的组件没有自愈能力,我们需要进行手动干预。首先,我们需要确定故障的原因和影响范围,并尽快修复故障。例如,如果节点发生故障,我们可以使用Kubernetes的Node Maintenance模式将该节点踢出集群,并将其修复或更换。对于有SPOF的组件,我们需要备份和恢复数据,或者将其转移到备用节点上。如果必要,我们可以通过手动缩放、重启或重新部署应用程序来解决故障。

事后总结和优化:最后,我们需要对故障进行事后总结和优化。我们可以使用Kubernetes日志和审计工具来分析故障原因,并制定相应的预防措施。同时,我们还需要对集群进行优化,以提高其稳定性和可靠性。例如,我们可以增加节点数量,加强网络安全措施,定期维护和更新软件等。

用户注册或机构创建失败后的手工激活步骤

用户激活

  1. 激活用户:在「用户管理」筛选「未激活」,找到需要激活的账号,「点击激活」
  2. 添加公共安全组:将该用户添加到 「user」 这个安全组,设置其角色为「common」
  3. 加入私人机构:将该用户添加到此私人机构,设置其角色为「Devops」(如果需要才进行设置为 Admin)
  4. 激活用户后,可以进行密码重置(非必选)

机构激活

  1. 激活机构:在「安全组管理」筛选「机构」+「未激活」,找到需要激活的机构安全组,「点击激活」。由于机构的创建相对复杂,如果激活再次失败,需要请运维人员协助查看日志处理
  2. 加入机构:可直接将对应用户添加到该机构,设置合适的角色

自定义应用常见问题处理

发布不成功

自定义应用发布 -> 参照文档进行应用安装 –> 安装失败 –> 查看操作记录中自定义应用详细的安装日志,记录>操作记录,有两个可能的结果和处理

发布成功

自定义应用发布 -> 参照文档进行应用安装 –> 安装成功 –> 启动自定义应用 –> 启动成功(1) –> 调用自定义应用对外端口,验证服务(2)

  1. 启动失败 -> 查看应用日志 > 当前运行应用 > 自定义应用 > 应用详情 > 日志
  2. 调用自定义应用对外端口,验证服务 -> 查看应用日志 > 当前运行应用 > 自定义应用 > 应用详情 > 日志

在查看 日志的时候会有3个分路径

高级

界面的异常表现

bdos-web 界面提示API错误

graph LR
id1[bdos-web界面使用时提示API错误]
id2[查看当前运行的所有系统应用是否正常运行]
id3[查看bdos-web日志,当前运行应用->系统应用->bdos-web->标准错误]
id4[主机网络]
id5[系统应用接口调用失败]
id6[查看运行异常系统应用的具体日志]
id7[根据日志处理应用具体问题]
id8[恢复]

id1-->id2--正常-->id3-->id4
id3-->id5

id2--存在运行异常的系统应用-->id6-->id7-->id8
id6-->id5
id6--无运行异常的系统应用-->id3
id7--系统应用恢复后api报错依然存在-->id3

基于 Loki 查看 APPs 日志的使用指南

背景知识:可以阅读 Grafana/Loki 官网介绍

使用环境:私有发布的 KDP,在 Portal 页面中打开 Loki

使用步骤

  1. 打开Loki 应用
  2. 在应用的功能模块中,选择「Explore」(左边栏第三个)
  3. 在 Explore 界面,在下拉选择框中选择源「Loki」

备注:集群预装的时候已经安装好一些看板,具体可以参考第四章节[监控看板],这个排查过程,可以允许对 LokiGL更加了解的工作人员,更加灵活的进行进行检查

  1. 在 Query 中可以通过输入 Loki QL 对限定范围的日志数进行查询,比如输入如下代码,表示从 bdos-online-web 的静态log 日志中,筛选出包含“type”:”path”以及projectid=21的信息
{filename=~`/var/log/admin-bdos-online-web/log/.*`} |= `"type":"path"` |= `projectId=21`

常用的使用案例

  1. 查询系统中访问后台接口的情况
{app="bdos-online-web",namespace="admin"}
|=`GET_CLUSTER_SETTINGS`
  1. 查看最近抛出的 FetchError
{app="bdos-online-web",namespace="admin"}
|= `FetchError`
  1. 查看特定用户的页面退出情况(刷新页面也算退出)
{filename=~`/var/log/admin-bdos-online-web/log/.*`}
|= `"userName":"cayla"`
|= `"type":"action"`
|= `"action":{"name":"quit"`
  1. 错误日志查询
{filename=~`/var/log/admin-bdos-online-web/error/.*`}
| pattern "<_> error - <logContent>"
| line_format "{{.logContent}}"
| json