基于 Kubernetes 安装
在 Kubernetes 上通过 helm 安装时如果出现问题,那么你可以根据当前的文档进行问题排查。
常见问题列表
安装时报错 Error: failed pre-install: job failed: BackoffLimitExceeded
基础环境检测不通过,通过以下命令查询日志,可以得知问题原因,根据说明处理环境即可。
kubectl logs -f -l name=env-checker -n rbd-system
输出如下
INFO Nfs client ready on node node1
INFO 192.168.2.180:80 ready
INFO 192.168.2.180:443 ready
INFO 192.168.2.180:6060 ready
INFO 192.168.2.180:7070 ready
INFO 192.168.2.180:8443 ready
ERROR Nfs client must been installed on node node2!
ERROR Nfs 客户端在节点 node2 中没有被检测到, 请确定是否已在所有宿主机安装该软件包.
INFO For CentOS: yum install -y nfs-utils; For Ubuntu: apt install -y nfs-common
Pod 只有几个,都是 Running 状态,但是无法访问
rbd-system 命名空间下跑起来了约四五个 Pod,而且都是 Running 状态,但是无法访问。
- 首先确定是否存在 rbd-gateway 的 Pod,如果不存在,那么执行以下命令查看 rbd-gateway 的节点亲和性是否满足当前节点的要求。不满足,则说明你的网关节点配置有误或集群节点上无对应的标签。
kubectl get ds rbd-gateway -n rbd-system -oyaml
- 如果有 rbd-gateway 的 Pod 且所有 Pod 均正常运行,那么通过查看自定义资源 rainbondcluster 的
status.conditions
字段查看报错信息,根据报错排查即可。
kubectl get rainbondcluster rainbondcluster -n rbd-system -oyaml
所有 Pod 全部正 常运行,也指定了 gatewayIngressIPs,但仍无法访问平台
通常出现在多节点集群中,当你只指定了 gatewayIngressIPs,而没有指定网关节点时,Rainbond 会自动选择节点作为网关节点。此时你指定的gatewayIngressIPs 需要能将流量路由到 Rainbond 自动选择的网关节点上。否则将无法访问平台。你可以通过以下命令查看 Rainbond 自动选择的网关节点。
kubectl get rainbondcluster rainbondcluster -n rbd-system -oyaml
查看 nodesForGateway 字段,需要让填写的 gatewayIngressIPs 路由到 nodesForGateway 字段所对应的节点。或者在安装时手动在 values.yaml 中指定网关节点地址。
Pod 处于Pending 、CrashLoopBackOff 、Evicted 、ImagePullBackOff等状态
Pending
当 Pod 处于 Pending 状态时,代表其没有进入正常的启动流程,可能是启动之前的任务有阻塞。要了解pod启动为何会受到阻塞,以 rbd-etcd-0 为例,可以执行命令 kubectl describe pod rbd-etcd-0 -n rbd-system
观察事件详情,来进一步进行排查。
CrashLoopBackOff
CrashLoopBackOff 状态意味着当前 Pod 已经可以正常启动,但是其内部的容器自行退出,这通常是因为内部的服务出了问题。要了解 Pod (以 rbd-etcd-0 为例)的启动为何失败,可以执行命令 kubectl logs -f rbd-etcd-0 -n rbd-system
,观察日志的输出,通过业务日志来确定问题原因。