问题描述

在 Kubernetes 集群中部署 LLaMa-Factory 时,通过 llamafactory-cli webui 启动的 WebUI 服务无法通过 Ingress 访问,需调整 Ingress 路由规则以解决访问问题。

常见原因分析

  1. Ingress 未正确配置路径规则,导致流量无法转发到后端 Service。
  2. Service 或 Pod 选择器不匹配,导致 Ingress 无法找到后端端点。
  3. 端口配置错误,WebUI 服务的端口未暴露或与 Ingress 配置不一致。
  4. 未启用必要的 Ingress 控制器(如 Nginx、Traefik 等)。

解决方法

检查 Service 和 Pod 状态

确保 WebUI 相关的 Pod 和 Service 正常运行:

kubectl get pods -n <namespace>
kubectl get svc -n <namespace>

确认 Pod 状态为 Running,Service 的 CLUSTER-IP 和端口已正确分配。

调整 Ingress 配置

修改 Ingress 资源,确保路径规则指向正确的 Service 和端口。以下是典型配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: llamafactory-webui
  namespace: <namespace>
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: webui.example.com  # 替换为实际域名
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: llamafactory-webui-service  # 替换为实际 Service 名称
            port:
              number: 7860  # 替换为 WebUI 服务端口

验证端口一致性

确认 WebUI 服务的端口(如 7860)与 Ingress 配置的 port.number 一致。若不一致,需调整 Service 或 Ingress。

检查 Ingress 控制器

确保集群已安装并运行 Ingress 控制器(如 Nginx Ingress Controller):

kubectl get pods -n ingress-nginx

若未安装,需参考官方文档部署对应的 Ingress 控制器。

测试路由访问

应用 Ingress 配置后,通过以下命令验证是否生效:

kubectl describe ingress llamafactory-webui -n <namespace>

通过浏览器或 curl 访问配置的域名,检查是否返回预期内容:

curl -v http://webui.example.com

补充说明

  • 若使用 HTTPS,需在 Ingress 中配置 TLS 证书。
  • 若路径需重写(如从 /webui 转发到 /),需通过注解(如 nginx.ingress.kubernetes.io/rewrite-target)实现。
  • 若问题仍未解决,检查 Kubernetes 事件日志:
    kubectl get events -n <namespace>
    

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐