debug指南
type
status
date
slug
summary
tags
category
icon
password
网址
调试 KServe 推理服务状态
您部署了一个 KServe 推理服务,但它尚未就绪。请按照以下步骤指南了解失败原因。
IngressNotConfigured
如果您看到
IngressNotConfigured
错误,这表明 Istio Ingress Gateway
探针失败。您可以检查 Knative
networking-istio
pod 日志以获取更多详细信息。如果您看到 HTTP 403,那么可能是您启用了
Istio RBAC
,它阻止了对您服务的探测。RevisionMissing Error
如果您看到
RevisionMissing
错误,则表示您的服务 pod 尚未就绪。Knative Service
创建 Knative Revision,它代表 InferenceService
代码和配置的快照。Storage Initializer 下载模型失败
如果您看到
READY
状态为 Unknown
错误,这通常表明 KServe Storage Initializer
初始化容器无法下载模型,您可以检查初始化容器日志以查看失败原因,请注意,如果初始化容器失败,pod 会在一段时间后缩减。推理服务内存溢出状态
如果您在修订版本状态中看到
ExitCode137
,这意味着修订版本已失败,这通常发生在推理服务 pod 内存不足时。要解决此问题,您可能需要提高 InferenceService
的内存限制。推理服务启动失败
如果您在修订版本状态中看到其他退出代码,您可以进一步检查 pod 状态。
如果您看到
CrashLoopBackOff
,则检查 kserve-container
日志以查看详细的失败原因,错误日志通常也会在修订版本容器状态中显示。推理服务无法从 AWS ECR 获取 docker 镜像
如果您完全看不到来自私有注册表(如 AWS ECR)的自定义镜像的推理服务,这可能是因为 Knative Serving Controller 无法对注册表进行身份验证。
您可以通过启动使用您镜像的 pod 来验证这一点。如果附加了正确的 IAM 角色,pod 应该能够获取镜像,而 Knative 则无法获取。要解决此问题,您可以跳过标签解析或为您的注册表提供证书,详情请参见官方 knative 文档。
生成的 yaml 将如下所示。
调试 KServe 请求流程
1.通过 Knative Ingress/Local Gateway
接收外部/内部流量
Istio Gateway
资源描述了接收入站或出站 HTTP/TCP 连接的网格边缘。规范描述了应该暴露的端口集合和使用的协议类型。如果您使用 Standalone
模式,它会在 knative-serving
命名空间中安装 Gateway
,如果您使用 Kubeflow KServe
(与 Kubeflow 一起安装的 KServe),它会在 kubeflow
命名空间中安装 Gateway
,例如在 GCP 上,网关受 IAP
保护,并使用 Istio 认证策略。2. KServe Istio virtual service
用于预测器、转换器和解释器的路由
KServe 创建路由规则,如果您在
InferenceService
上只指定了 Predictor
,则默认路由到 Predictor
。当在 InferenceService
上指定了 Transformer
和 Explainer
时,路由规则会根据动词配置流量路由到 Transformer
或 Explainer
。然后请求通过本地网关路由到第二级 Knative
创建的虚拟服务,并匹配主机标头。3. Knative Istio virtual service
将推理请求路由到最新的就绪修订版本
此处的目标是最新就绪
Knative Revision
的 k8s Service
,每当用户推出新修订版本时,Knative
都会进行协调。当新修订版本推出并处于就绪状态时,旧修订版本会缩减,在配置的修订版本 GC 时间之后,如果修订版本不再有流量引用,则修订版本资源会被垃圾回收。4. Kubernetes Service
将请求路由到推理服务 pod 的 queue proxy
边车上的 port
上一篇
如何贡献代码
下一篇
单位归一化
Loading...