트러블슈팅 가이드
2026-04-18 작성2026-07-17 수정9분 읽기
이 문서는 Inference Gateway 배포 및 운영 중 발생하는 일반적인 문제와 해결 방법을 다룹니다. 문제 발생 시 해당 섹션을 참조하여 빠르게 해결하세요.
1. 404 Not Found
증상: http://<NLB_ENDPOINT>/v1/chat/completions 요청 시 404
진단:
# HTTPRoute 상태 확인
kubectl get httproute -A
# Gateway 상태 확인
kubectl get gateway -n ai-gateway -o yaml
# kgateway 로그 확인
kubectl logs -n kgateway-system -l app=kgateway --tail=50
일반적 원인:
- HTTPRoute의
parentRefs.namespace가 Gateway 네임스페이스와 불일치 - ReferenceGrant가 누락되어 크로스 네임스페이스 접근 불가
hostnames필드가 요청의 Host 헤더와 불일치
해결 방법:
- parentRefs 확인:
# HTTPRoute에서 Gateway 네임스페이스 명시
spec:
parentRefs:
- name: unified-gateway
namespace: ai-gateway # Gateway가 있는 네임스페이스
- ReferenceGrant 생성:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
name: allow-gateway-to-services
namespace: ai-inference # Service가 있는 네임스페이스
spec:
from:
- group: gateway.networking.k8s.io
kind: HTTPRoute
namespace: ai-gateway # HTTPRoute가 있는 네임스페이스
to:
- group: ""
kind: Service
- hostnames 검증:
# 요청 시 Host 헤더 확인
curl -v http://<NLB_ENDPOINT>/v1/models
# HTTPRoute에 일치하는 hostname 추가
spec:
hostnames:
- "api.example.com"
- "<NLB_ENDPOINT>" # NLB DNS 이름도 추가
2. Bifrost provider/model 에러
증상: Provider not found 또는 Model not found 에러
원인과 해결:
| 에러 메시지 | 원인 | 해결 |
|---|---|---|
Provider not found: vllm | config.json에 provider 미등록 | vllm provider 추가 또는 custom_provider_config로 임의 이름 등록 |
Model not found: glm-5 | provider prefix 누락 | 요청 시 openai/glm-5 형태로 전송 |
| UI에서 설정 미표시 | providers가 배열로 작성됨 | "providers": [...] -> "providers": {...} (map) |
| OTel trace 미도착 | trace_type 오류 | 레거시 "otel" -> "genai_extension" (v1.5.0+ 필수) |
| Langfuse 403/401 | Authorization 포맷 오류 | Basic <BASE64(public_key:secret_key)> 확인 |
올바른 config.json 포맷:
{
"providers": {
"openai": {
"keys": [
{
"name": "local-vllm",
"value": "dummy",
"weight": 1.0,
"models": ["glm-5"]
}
],
"network_config": {
"base_url": "http://vllm-service:8000"
}
}
}
}
OTel 플러그인 올바른 설정:
{
"plugins": [
{
"enabled": true,
"name": "otel",
"config": {
"service_name": "bifrost",
"trace_type": "genai_extension", # v1.5.0+ 필수 (레거시 "otel"은 제거됨)
"protocol": "http",
"collector_url": "http://langfuse-web.langfuse.svc.cluster.local:3000/api/public/otel/v1/traces",
"headers": {
"Authorization": "Basic <BASE64(pk:sk)>",
"x-langfuse-ingestion-version": "4"
}
}
}
]
}