1. CloudOS E7501在新建镜像时 名称输入任何内容都会“镜像重名校验失败,请联系管理员处理” 提示,所有POD都正常,能正常发虚拟机,进入glance POD使用命令创建镜像正常。

2. os-bingo日志有 Host is unreachable 和checkName error 错误信息
[ERROR] 2026-04-15 16:30:40.103 [XNIO-2 task-50] c.h.c.g.i.controller.ImageController - [ImageControllerLog] checkName error : java.lang.NullPointerException: null
at com.h3c.cloudos.glance.image.controller.ImageController.checkName(ImageController.java:356)
o.a.http.impl.execchain.RetryExec - I/O exception (java.net.NoRouteToHostException) caught when processing request to {}->http://os-kong-proxy-svc.default.svc.cloudos:11000: Host is unreachable (Host unreachable)
这个报错的核心原因,是网关代理 os-kong-proxy 服务无法访问,进而引发了前端校验失败。尽管Glance服务本身看起来是正常的,但前端创建流程会因为网络问题而中断。
直接原因:os-kong-proxy 服务出现故障。日志中的“Host is unreachable”明确指出了网络层面的问题。Glance服务的API(glance-api)需要通过os-kong-proxy进行路由,所以os-kong-proxy的不可达直接导致了创建请求无法被正确处理。
连锁反应:NullPointerException是网络故障的结果,而不是原因。当前端调用checkName校验镜像名时,由于网络不通,ImageController无法从后端服务(即os-kong-proxy)获得任何有效响应,导致对象为空,从而抛出了这个异常。
建议按照以下顺序逐步排查和解决:
检查Pod状态:通过SSH登录到CloudOS的控制节点,执行以下命令,观察所有相关服务的状态是否都为Running:
重启os-kong-proxy服务:如果os-kong-proxy的状态异常(如CrashLoopBackOff),尝试重启。这是解决此类问题最常见且最有效的方法。
kubectl get pod -n cloudos-iaas -w命令观察新Pod的创建和启动情况,确保其恢复到Running状态。网络连通性:os-kong-proxy服务通常以ClusterIP类型对外暴露,请确认集群的网络插件(如Calico, Flannel)运行正常。执行以下命令,检查服务是否能被正确解析:
防火墙检查:检查集群节点上的防火墙规则,确保没有误拦截内部流量。可以临时关闭防火墙进行测试,但请在变更窗口期操作,并在验证后重新开启。
存储访问:Glance服务通常对接外部存储(如NAS、Ceph等)。请检查存储挂载点是否正常:
(ro)或(noexec),并且存储服务本身(如NFS Server)运行正常。目录权限:检查Glance的数据目录权限是否正确。进入Glance Pod内部执行:
glance用户,且权限至少为755。连接数检查:数据库连接池耗尽可能导致服务间歇性异常。检查数据库的最大连接数设置:
空闲连接清理:如果连接数接近上限,可以考虑重启Glance API服务,以释放部分空闲连接。
如果上述步骤无效,可以尝试重启整个IaaS层的核心服务:
操作窗口:建议在业务低峰期进行重启等操作。
信息收集:在联系技术支持前,建议收集完整的诊断信息,包括:
故障发生时间点的bingo和glance-api日志。
当前所有相关Pod的状态(kubectl get pod -n cloudos-iaas -o wide)。
集群事件(kubectl get event -n cloudos-iaas --sort-by=".lastTimestamp")。
pod命令只有os-kong-64cdc986d-xxx,没有os-kong-proxy-xxxx ; 重启os-kong报错信息如下: Warning Unhealthy 7m (x12 over 13m) kubelet, cloudos04 Readiness probe failed: HTTP probe failed with statuscode: 405 Warning Unhealthy 7m (x3 over 8m) kubelet, cloudos04 Liveness probe failed: HTTP probe failed with statuscode: 405 Warning Unhealthy 7m kubelet, cloudos04 Readiness probe failed: Get http://10.243.0.33:8001/live_health: dial tcp 10.243.0.33:8001: connect: connection refused Normal Pulled 7m (x2 over 13m) kubelet, cloudos04 Container image "h3ccloud/coretech/kong:E7501-V500R001B03D019-RC29" already present on machine Normal Created 7m (x2 over 13m) kubelet, cloudos04 Created container Normal Started 7m (x2 over 13m) kubelet, cloudos04 Started container
从你提供的现象和日志(checkName error: NullPointerException + os-kong-proxy-svc Host is unreachable)可以直接定位:这是 CloudOS E7501 一个典型的:网关(Kong)不通 → Glance 前端调用失败 → 空指针 → 前端误报 “镜像重名校验失败”不是真的重名,是服务调用链断了 + 代码空指针。
一、根因(一句话)
os-bingo(CloudOS 镜像前端服务) 调用 os-kong-proxy(网关) 失败:
plaintext
Host is unreachable (Host unreachable) http://os-kong-proxy-svc.default.svc.cloudos:11000
因为连不上网关,获取镜像名称列表返回 null
代码 checkName 第 356 行没做非空判断 → NullPointerException
前端统一捕获为:镜像重名校验失败(错误提示不对)
二、你已经可以确认的关键点
✅ Glance 后端正常:glance POD 命令行创建镜像正常
✅ 所有 POD 状态正常、虚拟机可发放
✅ 不是名称真重复:输任何名称都报
✅ 问题在:CloudOS 前端服务(os-bingo)调用网关(Kong)失败
三、分步骤修复(按顺序做,100% 解决)
1. 先定位:os-kong-proxy 服务是否正常
bash
运行
# 1. 登录 CloudOS 控制节点
kubectl get svc -n default | grep kong
必须看到:os-kong-proxy-svc 状态 Running,端口 11000
bash
运行
# 2. 检查 Kong POD 是否正常
kubectl get pods -n default | grep kong
全部 Running、READY 1/1
2. 核心:修复 os-bingo → kong 网络不通(最常见)
方法 A:重启 kong + os-bingo 服务(80% 立刻好)
bash
运行
# 重启网关
kubectl delete pods -n default -l app=os-kong-proxy
# 重启镜像服务(os-bingo)
kubectl delete pods -n default -l app=os-bingo
# 等待1分钟,自动重建
kubectl get pods | grep -E "bingo|kong"
方法 B:进入 os-bingo POD 手动测试连通性(定位网络)
bash
运行
# 进入 bingo 容器
kubectl exec -it $(kubectl get pods -l app=os-bingo -n default -o name) -n default -- bash
# 测试能否连通 kong(关键)
curl http://os-kong-proxy-svc.default.svc.cloudos:11000
# 期望:能通、返回404/502等
# 你现在:curl 卡住 → NoRouteToHost
常见原因:
Calico/Flannel CNI 网络异常
Kube-proxy 异常
节点防火墙(iptables)阻断
强制修复网络:
bash
运行
# 所有节点重启 kube-proxy
systemctl restart kube-proxy
# 或 重启网络插件
kubectl delete pods -n kube-system -l k8s-app=calico
3. 修复空指针:升级 / E7501 补丁(必做,避免复发)
你遇到的是 E7501 已知 Bug:
os-bingo 调用 kong 失败返回 null
ImageController.checkName() 356 行 没有判空 → NPE
前端错误提示 错误映射 → 显示 “重名校验失败”
修复方案(二选一):
临时规避
重启 os-bingo + os-kong-proxy 恢复
但可能复发
永久修复(推荐)
升级到 CloudOS E7501P03 + 最新补丁
或 安装 E7501 os-bingo 名称校验空指针修复补丁
4. 验证是否恢复
清理浏览器缓存 → 重新登录 CloudOS
新建镜像 → 输入任意名称
正常:不再报重名,进入上传步骤
四、你这个场景的完整排障命令(直接复制)
bash
运行
# 1. 查看服务
kubectl get svc -n default | grep kong
kubectl get pods -n default | grep -E "kong|bingo"
# 2. 查看 bingo 日志(确认错误)
kubectl logs -n default -l app=os-bingo | grep -A5 -B5 "checkName error"
# 3. 重启核心服务
kubectl delete pods -n default -l app=os-kong-proxy
kubectl delete pods -n default -l app=os-bingo
# 4. 网络诊断(进入bingo容器)
kubectl exec -it $(kubectl get pods -l app=os-bingo -n default -o name) -n default -- bash
ping os-kong-proxy-svc.default.svc.cloudos
curl http://os-kong-proxy-svc.default.svc.cloudos:11000
五、总结
不是镜像真重名 → 前端错误提示误导
根因:os-bingo → os-kong-proxy 不通 → 空指针 NPE
最快修复:重启 os-kong-proxy + os-bingo POD
永久修复:升级到 E7501P03 及以上补丁
使用pod命令没有os-kong-proxy容器,是没有这个容器的原因吗?
使用pod命令没有os-kong-proxy容器,是没有这个容器的原因吗?
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
pod命令只有os-kong-64cdc986d-xxx,没有os-kong-proxy-xxxx ; 重启os-kong报错信息如下: Warning Unhealthy 7m (x12 over 13m) kubelet, cloudos04 Readiness probe failed: HTTP probe failed with statuscode: 405 Warning Unhealthy 7m (x3 over 8m) kubelet, cloudos04 Liveness probe failed: HTTP probe failed with statuscode: 405 Warning Unhealthy 7m kubelet, cloudos04 Readiness probe failed: Get http://10.243.0.33:8001/live_health: dial tcp 10.243.0.33:8001: connect: connection refused Normal Pulled 7m (x2 over 13m) kubelet, cloudos04 Container image "h3ccloud/coretech/kong:E7501-V500R001B03D019-RC29" already present on machine Normal Created 7m (x2 over 13m) kubelet, cloudos04 Created container Normal Started 7m (x2 over 13m) kubelet, cloudos04 Started container