常见问题#
常见问题 - 安装#
删除 AIBrix 失败#
在这种情况下,你只需找到模型适配器,编辑对象,然后删除 finalizer 对。pod 将自动删除。
网关错误消息#
模型不存在
路由策略不正确
没有就绪的 pod
网关 ReferenceGrant 问题#
当使用 RayClusterFleet 进行多节点推理时(如多节点推理指南所述),通过 Envoy 网关访问模型时可能会遇到 500 错误,而通过端口转发直接访问则正常。
此问题发生的原因是网关(在 aibrix-system 命名空间中)需要显式权限才能访问其他命名空间(例如 default 命名空间)中的服务。要解决此问题,你需要创建一个 ReferenceGrant
apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
name: allow-aibrix-gateway-to-access-services-route
namespace: default
spec:
from:
- group: gateway.networking.k8s.io
kind: HTTPRoute
namespace: aibrix-system
to:
- group: ""
kind: Service
应用此 ReferenceGrant 后,网关应能正确路由请求到你的模型服务。
注意:这通常仅适用于多节点部署。简单的模型部署通常无需此额外配置即可工作。
使用 NodePort 或 ClusterIP 暴露网关 API#
在快速入门指南中,模型端点通常使用 kubectl port-forward 或通过 LoadBalancer 服务访问。然而,在某些环境(例如没有外部负载均衡器的本地集群)中,你可能更倾向于使用 NodePort 服务暴露 Envoy 网关,或者依赖默认的 ClusterIP 服务类型。
重要提示: 你不应直接修改 svc/envoy-aibrix-system-aibrix-eg-903790dc 服务,因为它由 EnvoyProxy 控制器管理。相反,请更新 EnvoyProxy 配置以设置服务类型。
选项 1:NodePort(暴露到集群外部)
将规范更新为 NodePort
...
spec:
provider:
kubernetes:
envoyService:
type: NodePort
envoyDeployment:
...
应用更改后,网关服务将更新
$ kubectl get svc envoy-aibrix-system-aibrix-eg-903790dc -n envoy-gateway-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
envoy-aibrix-system-aibrix-eg-903790dc NodePort 192.168.194.158 <none> 80:32432/TCP 5h21m
然后你可以重新生成模型端点
$ NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}' | awk '{print $1}')
$ NODE_PORT=$(kubectl get svc envoy-aibrix-system-aibrix-eg-903790dc -n envoy-gateway-system -o=jsonpath='{.spec.ports[0].nodePort}')
$ ENDPOINT="${NODE_IP}:${NODE_PORT}"
你的模型端点现在可以通过 NodePort 从集群外部访问。
选项 2:ClusterIP(仅限内部访问)
默认情况下,Envoy 网关服务类型为 ClusterIP
...
spec:
provider:
kubernetes:
envoyService:
type: ClusterIP
envoyDeployment:
...
网关服务看起来像这样
$ kubectl get svc envoy-aibrix-system-aibrix-eg-903790dc -n envoy-gateway-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
envoy-aibrix-system-aibrix-eg-903790dc ClusterIP 192.168.194.158 <none> 80/TCP 18h
然后你可以重新生成模型端点(仅在集群内部可访问)
$ CLUSTER_IP=$(kubectl get svc envoy-aibrix-system-aibrix-eg-903790dc -n envoy-gateway-system -o=jsonpath='{.spec.clusterIP}')
$ CLUSTER_PORT=$(kubectl get svc envoy-aibrix-system-aibrix-eg-903790dc -n envoy-gateway-system -o=jsonpath='{.spec.ports[0].port}')
$ ENDPOINT="${CLUSTER_IP}:${CLUSTER_PORT}"
此端点仅在 Kubernetes 集群内部工作(例如,当其他服务与网关内部通信时)。
在 Envoy Gateway 文档中获取更多配置。