故障处理
基础
监控和警报:首先,我们需要在Kubernetes集群中设置监控和警报系统,以便能够及时检测和诊断故障。例如,在KDP中我们使用Prometheus和Grafana等监控工具来监视集群中各个组件的运行状态,并设置警报规则,以便在发生故障时及时通知相关人员。
自动恢复:对于没有SPOF的组件,如果它们发生故障,Kubernetes本身可以自动将它们重新调度到可用的节点上。因此,我们可以通过设置Kubernetes的自动伸缩和容错机制来实现自动恢复。例如,我们可以使用Deployment或StatefulSet控制器来部署应用程序,并设置自动重启和故障转移等机制,以确保应用程序的高可用性。
手动干预:如果发生故障的组件没有自愈能力,我们需要进行手动干预。首先,我们需要确定故障的原因和影响范围,并尽快修复故障。例如,如果节点发生故障,我们可以使用Kubernetes的Node Maintenance模式将该节点踢出集群,并将其修复或更换。对于有SPOF的组件,我们需要备份和恢复数据,或者将其转移到备用节点上。如果必要,我们可以通过手动缩放、重启或重新部署应用程序来解决故障。
事后总结和优化:最后,我们需要对故障进行事后总结和优化。我们可以使用Kubernetes日志和审计工具来分析故障原因,并制定相应的预防措施。同时,我们还需要对集群进行优化,以提高其稳定性和可靠性。例如,我们可以增加节点数量,加强网络安全措施,定期维护和更新软件等。
用户注册或机构创建失败后的手工激活步骤
用户激活
- 激活用户:在「用户管理」筛选「未激活」,找到需要激活的账号,「点击激活」
- 添加公共安全组:将该用户添加到 「user」 这个安全组,设置其角色为「common」
- 加入私人机构:将该用户添加到此私人机构,设置其角色为「Devops」(如果需要才进行设置为 Admin)
- 激活用户后,可以进行密码重置(非必选)
机构激活
- 激活机构:在「安全组管理」筛选「机构」+「未激活」,找到需要激活的机构安全组,「点击激活」。由于机构的创建相对复杂,如果激活再次失败,需要请运维人员协助查看日志处理
- 加入机构:可直接将对应用户添加到该机构,设置合适的角色
自定义应用常见问题处理
发布不成功
自定义应用发布 -> 参照文档进行应用安装 –> 安装失败 –> 查看操作记录中自定义应用详细的安装日志,记录>操作记录,有两个可能的结果和处理
- (可能A)镜像构建失败,缺少dockerfile中必要的资源源文件 -> 在资源文件配置项总上传必需的资源文件
- (可能B)dockerfile中from的基础镜像不存在或者拉去失败 -> 无法拉去公网基础镜像/其他镜像拉取权限问题 -> 将基础镜像通过 bootstrap 上传到 bdos 集群内部的 registry仓库,dockerfile中使用bdos 集群私有仓库地址
发布成功
自定义应用发布 -> 参照文档进行应用安装 –> 安装成功 –> 启动自定义应用 –> 启动成功(1) –> 调用自定义应用对外端口,验证服务(2)
- 启动失败 -> 查看应用日志 > 当前运行应用 > 自定义应用 > 应用详情 > 日志
- 调用自定义应用对外端口,验证服务 -> 查看应用日志 > 当前运行应用 > 自定义应用 > 应用详情 > 日志
在查看 日志的时候会有3个分路径
- 路径A:无正在运行的容器实例,无法查看容器日志 -> 参考上一小节(发布不成功)的(可能B),因为有可能是镜像拉去失败了
- 路径B:历史实例列表中可以看到容器实例运行时间很短,启动就失败 -> 容器内服务运行错误,倒是容器无法正常启动 -> 查看具体日志分析应用侧原因
- 路径C:容器实例在长时间运行后自动重启
-> C1:容器内服务最终启动运行失败 -> 查看具体日志分析应用侧原因
-> C2:检查配置中的健康方式是否正确 -> 修改发布配置中的健康检查方式,部分业务可以再构建镜像时候添加自定义的程序监控脚本,供健康检查程序调用
高级
界面的异常表现
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
使用步骤
- 打开Loki 应用
- 在应用的功能模块中,选择「Explore」(左边栏第三个)
- 在 Explore 界面,在下拉选择框中选择源「Loki」
备注:集群预装的时候已经安装好一些看板,具体可以参考第四章节[监控看板],这个排查过程,可以允许对 LokiGL更加了解的工作人员,更加灵活的进行进行检查
- 在 Query 中可以通过输入 Loki QL 对限定范围的日志数进行查询,比如输入如下代码,表示从 bdos-online-web 的静态log 日志中,筛选出包含“type”:”path”以及projectid=21的信息
{filename=~`/var/log/admin-bdos-online-web/log/.*`} |= `"type":"path"` |= `projectId=21` |
常用的使用案例
- 查询系统中访问后台接口的情况
{app="bdos-online-web",namespace="admin"} |
- 查看最近抛出的 FetchError
{app="bdos-online-web",namespace="admin"} |
- 查看特定用户的页面退出情况(刷新页面也算退出)
{filename=~`/var/log/admin-bdos-online-web/log/.*`} |
- 错误日志查询
{filename=~`/var/log/admin-bdos-online-web/error/.*`} |