应用故障
1. 构建失败故障排查
- 代码构建阶段: 进入代码构建阶段,首先会进行代码的打包,如果代码打包失败,则构建任务失败。
- 镜像构建阶段: 如果代码打包成功,则进入镜像构建阶段,如果镜像构建失败,则构建任务失败。
- 完成: 如果镜像构建成功,则构建任务完成。
代码构建阶段常见问题(buildpack)
- 构建日志一直卡在
Start clone source code from git
获取源代码阶段- 请检查代码源是否正确,以及是否存在权限问题。
- 请检查网络连接是否正常。
- 构建日志一直卡在
make code package success, create build code job success
启动代码构建任务阶段- 代码构建任务会在
rbd-system
命名空间下启动一个 Job 任务,请检查该 Job 任务状态。
$ kubectl get pod -n rbd-system
NAME READY STATUS RESTARTS AGE
ef9363dc8987cc5afa439e296e378622-20250317161307 1/1 Running 0 8s
...... - 代码构建任务会在
- 其他情况可能是代码问题,请详细查看构建日志进行排查。
镜像构建阶段常见问题(buildkit)
- 构建日志一直卡在
code build success, create build code job success
启动镜像构建任务阶段- 镜像构建任务会在
rbd-system
命名空间下启动一个 Job 任务,请检查该 Job 任务状态。
$ kubectl get pod -n rbd-system
NAME READY STATUS RESTARTS AGE
ef9363dc8987cc5afa439e296e378622-20250317161307-dockerfile 1/1 Running 0 8s
...... - 镜像构建任务会在
- 源码构建提示 error: failed to solve: goodrain.me/runner:latest-amd64,这种情况通常是无法从
goodrain.me
镜像仓库获取runner
镜像,尝试手动重新推送该镜像:- 获取最新的
runner
镜像
nerdctl pull registry.cn-hangzhou.aliyuncs.com/goodrain/runner:stable
- 推送到
goodrain.me
镜像仓库
nerdctl tag registry.cn-hangzhou.aliyuncs.com/goodrain/runner:stable goodrain.me/runner:latest-amd64
nerdctl login goodrain.me -u admin -padmin1234 --insecure-registry
nerdctl push goodrain.me/runner:latest-amd64 --insecure-registry - 获取最新的
BuildKit 源码构建配置
默认采用 BuildKit 作为源码构建镜像打包工具。
BuildKit 配置文件名称默认为 goodrain-me
,如在安装时指定了镜像仓库名称,则配置文件名称为镜像仓库名称,如 registry-cn-hangzhou-aliyuncs-com
。
DockerHub 镜像加速
Dockerfile 源码构建引用 DockerHub 镜像获取超时,修改 BuildKit 配置镜像加速。
apiVersion: v1
data:
buildkittoml: |-
debug = true
[registry."goodrain.me"]
http = false
insecure = true
+ [registry."docker.io"]
+ mirrors = ["docker.rainbond.cc"]
kind: ConfigMap
metadata:
name: goodrain.me
namespace: rbd-system
源码构建报错 x509: certificate signed by unknown authority
安装时对接了私有仓库是 HTTP 协议,源码构建时拉取镜像报错 x509: certificate signed by unknown authority
,需修改 BuildKit 配置文件。
apiVersion: v1
data:
buildkittoml: |-
debug = true
[registry."goodrain.me"]
http = false
insecure = true
+ [registry."xxx.xxx.xxx.xxx:5000"]
+ http = true
+ insecure = true
kind: ConfigMap
metadata:
name: goodrain.me
namespace: rbd-system
源码构建提示 dial tcp look up goodrain.me on xxx:53: no such host
一般这是由于本地 /etc/hosts
没有自动写入 goodrain.me
的解析,通过以下命令重新写入:
kubectl delete pod -l name=rainbond-operator -n rbd-system
rainbond-operator 会自动重新启动写入 /etc/hosts
的 Job 任务。
2. 组件运行故障排查
组件无运行日志信息
组件的日志通过 WebSocket
进行推送,如果无日志信息,在 平台管理 -> 集群 -> 编辑,查看 WebSocket
通信地址是否正确,本地是否可以与该地址进行通信。
组件异常状态故障排查
-
调度中:组件实例一直处于调度中状态的实例,体现为橙黄色的方块。说明集群中已经没有足够的资源来运行这个实例。具体的资源项短缺详情,可以点击橙黄色的方块,打开实例详情页面后在
说明
处了解到。例如:实例状态:调度中
原因: Unschedulable
说明: 0/1 nodes are available: 1 node(s) had desk pressure- 根据
说明
可以了解到,当前集群中共有 1 个宿主机节点,但是处于不可用状态,原因是该节点存在磁盘压力。根据原因对节点进行磁盘扩容或空间清理后,该问题会自动解除。常见的资源短缺类型还包括:CPU 不足、内存不足。
- 根据
-
等待启动:组件实例一直处于等待启动状态。Rainbond 平台根据组件之间的依赖关系确定启动顺序,如果组件长时间处于等待启动状态,则说明其依赖的某些组件未能正常启动。切换至应用拓扑视图梳理组件间依赖关系,确保其依赖的组件都处于正常的运行状态。
-
运行异常:运行异常状态代表该实例无法正常运行。点击红色的方块,可以在实例详情页面找到提示,重点关注实例中的容器的状态,通过状态的不同,来继续排查问题。以下是常见的几种问题状态:
- ImagePullBackOff: 该状态说明当前容器的镜像无法被拉取,下拉至
事件
列表处,可以得到更为详细的信息。确保对应的镜像可以被拉取,如果发现无法拉取的镜像以goodrain.me
开头,则可以尝试构建该组件解决问题。 - CrashLoopBackup: 该状态说明当前容器本身启动失败,或正在遭遇运行错误。切换至
日志
页面查看业务日志输出并解决问题即可。 - OOMkilled: 该状态说明为容器分配的内存太小,或业务本身存在内存泄漏问题。业务容器的内存配置入口位于
伸缩
页面。插件容器的内存配置入口位于插件
页面。
- ImagePullBackOff: 该状态说明当前容器的镜像无法被拉取,下拉至