轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像
交易
充值流量¥7起我的订单
文档
工具
提交工单页面收录
ghcr.io/kserve/models-web-app

ghcr.io/kserve/models-web-app:sha-ceb43b5

ghcr.iolinux/amd64sha-ceb43b5大小: 99.19 MB更新于 2026年7月5日
让 AI 帮你使用轩辕镜像? · 展开查看说明 · 点击收起说明

如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这句话即可:

请先完整阅读并严格遵守以下文档中的全部规则与要求:

https://xuanyuan.cloud/agents.md

在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

KSERVE UI

此Web应用程序允许用户在Kubeflow集群中管理KServe推理资源。它提供了一种用户友好的方式来处理InferenceService和InferenceGraph自定义资源的生命周期。

InferenceService``InferenceGraph## 支持的资源

  • serving.kserve.io/v1beta1 版本的 InferenceService 资源 InferenceService``serving.kserve.io/v1beta1- serving.kserve.io/v1alpha1 版本的 InferenceGraph 资源 InferenceGraph``serving.kserve.io/v1alpha1创建表单还支持多文档YAML,用于按顺序创建受支持的KServe资源。多文档创建目前支持InferenceService、InferenceGraph和TrainedModel资源。资源按文档顺序创建;如果创建失败,应用程序会报告失败的文档以及已创建的任何资源,但不会回滚之前成功创建的资源。

InferenceService``InferenceGraph``TrainedModel## 当前范围

InferenceService和InferenceGraph均为应用程序中的一等资源,但目前它们的UI界面并不完全相同。

InferenceService``InferenceGraph- InferenceService仍是主要的模型服务器管理流程,包括主要的列表/详情视图以及特定于服务的操作视图。 InferenceService- InferenceGraph可通过专用的列表、创建、编辑和详情路由访问。 InferenceGraph- InferenceGraph详情目前侧重于图概述、事件和YAML,而非完整的InferenceService操作视图。 InferenceGraph``InferenceService## 文档

  • 测试指南 - 使用Jest和Cypress进行单元测试和端到端测试的综合指南

连接到应用程序

此Web应用程序与其他KServe组件一起安装,位于kserve命名空间或kubeflow命名空间中。存在一个VirtualService,通过Istio Ingress Gateway公开应用程序。根据安装环境,将使用以下Ingress Gateway。

kserve``kubeflow``VirtualService| 安装模式 | IngressGateway | |------------------|------------------------------------| | Standalone KServe | knative-ingress-gateway.knative-serving | | Kubeflow | kubeflow-gateway.kubeflow |

要访问应用程序,需在浏览器中导航至

${INGRESS_IP}/models/

或者,您可以通过kubectl port-forward访问应用程序。在这种情况下,您需要将应用程序配置为:

kubectl port-forward- 不执行任何授权检查,因为没有登录用户

  • 在 / 前缀下工作
  • 禁用安全Cookie,因为应用程序将通过纯HTTP公开

您可以通过以下命令应用上述配置:

# edit the configmap
# CONFIG=manifests/kustomize/overlays/kubeflow/kustomization.yaml
CONFIG=manifests/kustomize/base/kustomization.yaml
vim ${CONFIG}

# Add the following env vars to the configMapGenerator's literals
# for kserve-models-web-app-config
- APP_PREFIX=/
- APP_DISABLE_AUTH="True"
- APP_SECURE_COOKIES="False"

# reapply the kustomization
# kustomize build manifests/kustomize/overlays/kubeflow | kubectl apply -f -
kustomize build manifests/kustomize/base | kubectl apply -f -

配置

以下是可为此基础应用程序衍生的任何Web应用程序设置的环境变量列表。

环境变量默认值描述
APP_PREFIX/models通过设置base-url元素控制应用程序的前缀
APP_DISABLE_AUTHFalse控制应用程序是否应使用SubjectAccessReviews确保用户有权执行操作
APP_SECURE_COOKIESTrue控制应用程序是否应使用安全CSRF Cookie。默认情况下,应用程序期望通过https公开
CSRF_SAMESITEStrict控制CSRF Cookie的SameSite值
USERID_HEADERkubeflow-userid每个请求中包含登录用户名的标头
USERID_PREFIX""从USERID_HEADER值中移除的前缀,用于提取登录用户名
GRAFANA_PREFIX/grafana控制指标仪表板的Grafana端点前缀
GRAFANA_CPU_MEMORY_DBdb/knative-serving-revision-cpu-and-memory-usageCPU和内存指标的Grafana仪表板名称
GRAFANA_HTTP_REQUESTS_DBdb/knative-serving-revision-http-requestsHTTP请求指标的Grafana仪表板名称
ALLOWED_NAMESPACES""允许访问的命名空间的逗号分隔列表。如果为空,则可访问所有命名空间。单个命名空间会自动选择并隐藏下拉菜单

USERID_HEADER## 命名空间过滤配置

对于独立部署,使用ALLOWED_NAMESPACES配置用户可访问的命名空间:

ALLOWED_NAMESPACES- 空值/未设置(默认):可访问所有集群命名空间

  • 单个命名空间:ALLOWED_NAMESPACES="kubeflow-user" - 自动选择,隐藏下拉菜单 ALLOWED_NAMESPACES="kubeflow-user"- 多个命名空间:ALLOWED_NAMESPACES="ns1,ns2,ns3" - 过滤下拉菜单 ALLOWED_NAMESPACES="ns1,ns2,ns3"无效的命名空间将被忽略;如果没有有效命名空间,则回退到所有命名空间。

示例

# 仅允许访问一个命名空间(自动选择,隐藏下拉菜单)
export ALLOWED_NAMESPACES="kubeflow-user"

# 允许访问多个特定命名空间
export ALLOWED_NAMESPACES="kubeflow-user,kubeflow-admin,ml-team"

# 默认行为 - 可访问所有命名空间
unset ALLOWED_NAMESPACES

Kubernetes 部署

将环境变量添加到部署配置中:

apiVersion: apps/v1
kind: Deployment
metadata:
name: kserve-models-web-application
spec:
template:
spec:
containers:
- name: kserve-models-web-application
env:
- name: ALLOWED_NAMESPACES
value: "kubeflow-user,kubeflow-admin"

Grafana 配置

应用程序支持Grafana端点和仪表板名称的运行时配置,允许您使用自定义Grafana实例和仪表板配置,而无需重新构建应用程序。

如果使用Kustomize在Kubernetes上部署,您可以通过编辑manifests/kustomize/base/kustomization.yaml(或您的覆盖层)中kserve-models-web-app-config的configMapGenerator下的内容,在应用程序的ConfigMap中设置这些值。根据需要更新以下文字:

manifests/kustomize/base/kustomization.yaml``configMapGenerator``kserve-models-web-app-config- GRAFANA_PREFIX(例如,/grafana 或 /custom-grafana) GRAFANA_PREFIX``/grafana``/custom-grafana- GRAFANA_CPU_MEMORY_DB(例如,db/custom-cpu-memory-dashboard) GRAFANA_CPU_MEMORY_DB``db/custom-cpu-memory-dashboard- GRAFANA_HTTP_REQUESTS_DB(例如,db/custom-http-requests-dashboard) GRAFANA_HTTP_REQUESTS_DB``db/custom-http-requests-dashboard编辑后,重新应用清单,例如:

kustomize build manifests/kustomize/base | kubectl apply -f -

配置 API

您可以通过访问/api/config端点验证Grafana配置:

/api/config

curl http://your-app-url/api/config

预期响应:

{
"grafanaPrefix": "/custom-grafana",
"grafanaCpuMemoryDb": "db/custom-cpu-memory-dashboard",
"grafanaHttpRequestsDb": "db/custom-http-requests-dashboard"
}

开发

前端使用Angular构建,后端使用Python Flask框架编写。

此Web应用程序使用来自kubeflow/notebooks仓库的通用代码。我们希望在不同的Kubeflow Web应用程序中保持一致的用户体验,并使它们处于相同的开发状态。为实现这一目标,应用程序将使用此共享通用代码。

无论是在本地构建应用程序还是构建OCI容器镜像,都需要获取此通用代码。

要在本地运行应用程序,需要执行以下步骤:

  • 以监视模式构建前端
  • 运行后端

npm run build:watch命令会将前端制品构建到后端的static文件夹中以进行服务。因此,要查看应用程序,需要启动后端并连接到localhost:5000。

要求:

  • node 22.0.0
  • python 3.12

前端

选项1:使用Makefile(推荐)

cd $KSERVE_MODELS_WEB_APPLICATION_REPOSITORY/frontend

# 设置依赖项并构建通用库
make setup

# 可选:指定自定义Kubeflow仓库路径。默认值:`../../notebooks`(相对于frontend目录)
# make setup KF_REPO=/path/to/notebooks
# 清理命令:提供make clean目标以删除node_modules
# make clean

# 构建并监视更改
npm run build:watch

选项2:手动设置

# 构建通用库
COMMIT=$(cat ./frontend/COMMIT)
cd $KUBEFLOW_REPOSITORY/components/crud-web-apps/common/frontend/kubeflow-common-lib
git checkout $COMMIT

npm i
npm run build
cd dist/kubeflow
npm link

# 运行应用程序前端
cd $KSERVE_MODELS_WEB_APPLICATION_REPOSITORY/frontend
npm i
npm link kubeflow
npm run build:watch

后端

在本地运行

# 创建虚拟环境并安装依赖项
# https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/
cd $KSERVE_MODELS_WEB_APPLICATION_REPOSITORY/backend
python3.12 -m pip install --user virtualenv
python3.12 -m venv web-application-development
source web-application-development/bin/activate

# 在激活的虚拟环境中安装依赖项
KUBEFLOW_REPOSITORY="/path/to/kubeflow/notebooks" make -C backend install-deps

# 运行后端
make -C backend run-dev

已知问题

使用oauth2-proxy时的大型JWT令牌

拥有大型JWT令牌的用户(常见于Azure AD和大量组成员身份)可能会遇到请求失败。部署包含Gunicorn配置(GUNICORN_CMD_ARGS=--limit-request-field_size 32000)以处理更大的标头。

有关更多详细信息,请参阅oauth2-proxy已知问题。


项目仓库 README(补充)

KSERVE UI

此Web应用程序负责允许用户在Kubeflow集群中管理KServe推理资源。它提供了一种用户友好的方式来处理InferenceService和InferenceGraph自定义资源的生命周期。

支持的资源

  • serving.kserve.io/v1beta1版本的InferenceService资源
  • serving.kserve.io/v1alpha1版本的InferenceGraph资源

创建表单还支持多文档YAML,用于按顺序创建受支持的KServe资源。多文档创建目前接受InferenceService、InferenceGraph和TrainedModel资源。资源按文档顺序创建;如果某个创建失败,应用程序会报告失败的文档以及已创建的任何资源,但不会回滚之前成功创建的资源。

当前范围

InferenceService和InferenceGraph都是应用程序中的一等资源,但它们目前并不共享完全相同的UI界面。

  • InferenceService仍是主要的模型服务器管理流程,包括主要的列表/详情体验和特定于服务的操作视图。
  • InferenceGraph可通过专用的列表、创建、编辑和详情路由访问。
  • InferenceGraph详情目前侧重于图概述、事件和YAML,而非InferenceService的全套操作视图。

文档

  • 测试指南 - 使用Jest和Cypress进行单元测试和端到端测试的综合指南

连接到应用程序

此Web应用程序与其他KServe组件一起安装,位于kserve命名空间或kubeflow命名空间中。存在一个VirtualService,通过Istio Ingress Gateway公开应用程序。根据安装环境,将使用以下Ingress Gateway。

安装模式Ingress网关
独立KServeknative-ingress-gateway.knative-serving
Kubeflowkubeflow-gateway.kubeflow

要访问应用程序,需在浏览器中导航至

${INGRESS_IP}/models/

或者,您可以通过kubectl port-forward访问应用程序。在这种情况下,需要将应用程序配置为:

  1. 不执行任何授权检查,因为没有登录用户
  2. 在/前缀下工作
  3. 禁用安全Cookie,因为应用程序将通过纯HTTP公开

您可以通过以下命令应用上述配置:

# 编辑配置映射
# CONFIG=manifests/kustomize/overlays/kubeflow/kustomization.yaml
CONFIG=manifests/kustomize/base/kustomization.yaml
vim ${CONFIG}

# 将以下环境变量添加到kserve-models-web-app-config的configMapGenerator的literals中
- APP_PREFIX=/
- APP_DISABLE_AUTH="True"
- APP_SECURE_COOKIES="False"

# 重新应用kustomization
# kustomize build manifests/kustomize/overlays/kubeflow | kubectl apply -f -
kustomize build manifests/kustomize/base | kubectl apply -f -

配置

命名空间过滤配置

对于独立部署,可通过 ALLOWED_NAMESPACES 配置用户可访问的命名空间:

  • 空值/未设置(默认):可访问所有集群命名空间
  • 单个命名空间:ALLOWED_NAMESPACES="kubeflow-user" - 自动选择,隐藏下拉菜单
  • 多个命名空间:ALLOWED_NAMESPACES="ns1,ns2,ns3" - 过滤下拉菜单

无效命名空间将被忽略;若没有有效命名空间,则回退到允许所有命名空间。

示例

# 仅允许访问一个命名空间(自动选择,隐藏下拉菜单)
export ALLOWED_NAMESPACES="kubeflow-user"

# 允许访问多个特定命名空间
export ALLOWED_NAMESPACES="kubeflow-user,kubeflow-admin,ml-team"

# 默认行为 - 可访问所有命名空间
unset ALLOWED_NAMESPACES

Kubernetes 部署

在部署配置中添加环境变量:

apiVersion: apps/v1
kind: Deployment
metadata:
name: kserve-models-web-application
spec:
template:
spec:
containers:
- name: kserve-models-web-application
env:
- name: ALLOWED_NAMESPACES
value: "kubeflow-user,kubeflow-admin"

Grafana 配置

应用程序支持 Grafana 端点和仪表板名称的运行时配置,允许您使用自定义 Grafana 实例和仪表板配置,而无需重新构建应用程序。

如果在 Kubernetes 上使用 Kustomize 部署,可通过编辑 manifests/kustomize/base/kustomization.yaml(或您的覆盖层)中 kserve-models-web-app-config 的 configMapGenerator,在应用程序的 ConfigMap 中设置这些值。根据需要更新以下文字值:

  • GRAFANA_PREFIX(例如:/grafana 或 /custom-grafana)
  • GRAFANA_CPU_MEMORY_DB(例如:db/custom-cpu-memory-dashboard)
  • GRAFANA_HTTP_REQUESTS_DB(例如:db/custom-http-requests-dashboard)

编辑后,重新应用清单,例如:

kustomize build manifests/kustomize/base | kubectl apply -f -

配置 API

您可以通过访问 /api/config 端点验证 Grafana 配置:

curl http://your-app-url/api/config

预期响应:

{
"grafanaPrefix": "/custom-grafana",
"grafanaCpuMemoryDb": "db/custom-cpu-memory-dashboard",
"grafanaHttpRequestsDb": "db/custom-http-requests-dashboard"
}

开发

前端使用 https://angular.io/ 构建,后端使用 Python https://flask.palletsprojects.com/en/1.1.x/ 框架编写。

此 Web 应用程序使用来自 https://github.com/kubeflow/notebooks/tree/master/components/crud-web-apps/common 仓库的通用代码。我们希望确保不同 Kubeflow Web 应用之间具有一致的用户体验,并保持相同的开发状态。为此,这些应用程序将使用此共享通用代码。

这要求我们在本地构建应用程序或构建 OCI 容器镜像时获取此通用代码。

要在本地运行应用程序,您需要:

  1. 以监视模式构建前端
  2. 运行后端

npm run build:watch 命令会将前端制品构建到后端的 static 文件夹中以供服务。因此,要查看应用程序,您需要启动后端并连接到 localhost:5000。

要求:

  • node 22.0.0
  • python 3.12

前端

选项 1:使用 Makefile(推荐)

cd $KSERVE_MODELS_WEB_APPLICATION_REPOSITORY/frontend

# 设置依赖并构建通用库
make setup

# 可选:指定自定义 Kubeflow 仓库路径。默认:`../../notebooks`(相对于 frontend 目录)
# make setup KF_REPO=/path/to/notebooks
# 清理命令:提供 make clean 目标以删除 node_modules
# make clean

# 构建并监视更改
npm run build:watch

选项 2:手动设置

# 构建通用库
COMMIT=$(cat ./frontend/COMMIT)
cd $KUBEFLOW_REPOSITORY/components/crud-web-apps/common/frontend/kubeflow-common-lib
git checkout $COMMIT

npm i
npm run build
cd dist/kubeflow
npm link

# 运行应用程序前端
cd $KSERVE_MODELS_WEB_APPLICATION_REPOSITORY/frontend
npm i
npm link kubeflow
npm run build:watch

后端

本地运行

# 创建虚拟环境并安装依赖
# https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/
cd $KSERVE_MODELS_WEB_APPLICATION_REPOSITORY/backend
python3.12 -m pip install --user virtualenv
python3.12 -m venv web-application-development
source web-application-development/bin/activate

# 在激活的虚拟环境中安装依赖
KUBEFLOW_REPOSITORY="/path/to/kubeflow/notebooks" make -C backend install-deps

# 运行后端
make -C backend run-dev

已知问题

使用 oauth2-proxy 时的大型 JWT 令牌

具有大型 JWT 令牌的用户(常见于 Azure AD 和大量组成员身份)可能会遇到请求失败。部署包含 Gunicorn 配置(GUNICORN_CMD_ARGS=--limit-request-field_size 32000)以处理更大的标头。

有关更多详细信息,请参见 https://github.com/kubeflow/manifests/tree/master/common/oauth2-proxy#known-issues%E3%80%82

轩辕镜像配置手册

按平台快速找到配置文档

一键安装

一键安装 Docker

Linux Docker 一键安装

AI

用 AI 使用轩辕镜像

agents.md · AI 对话 · 提示词

Docker

登录仓库拉取

登录认证 · 私有仓库

专属域名拉取

免登录 · 高速拉取

Linux

Docker 镜像配置

Windows / Mac

Docker Desktop 配置

MacOS OrbStack

OrbStack 容器

Apple Container

macOS 原生容器

Docker Compose

Compose 项目配置

NAS

群晖

Synology 配置

飞牛

fnOS 镜像配置

绿联

绿联 NAS

威联通

QNAP 配置

极空间

极空间 NAS

Unraid

Unraid NAS

企业仓库

其他仓库

ghcr · Quay · nvcr

Harbor 镜像源

Proxy Repository 对接

Portainer 镜像源

Registries 配置

Nexus 镜像源

Docker Proxy 缓存

开发工具

Dev Containers

VS Code 开发容器

Podman

Podman 配置指南

Singularity / Apptainer

HPC 科学计算容器

Kubernetes

K8s Containerd

Kubernetes · Containerd

K3s

轻量级集群

面板 / 网络

爱快路由

爱快 4.0 · iKuai 镜像加速

宝塔面板

一键配置镜像源

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

功能

版本功能对比

功能对比 · 版本选择

支持的镜像仓库

Docker Hub · GCR · GHCR

专属域名用法

专属域名 · 开启停用 · 多仓库

新手拉取配置

登录 · 专属域名 · 配置

docker search 限制

专属域名 · Hub 搜索

不支持 push

仅支持 pull · 不支持

拉取速度原因

带宽 · 缓存 · 冷热镜像

错误码

402 与流量用尽

402 · 流量包 · 充值

401 认证失败

401 · docker login

manifest unknown

标签错误 · 镜像不存在

410 Gone 排查

410 · Docker 升级

429 限流

免费版 · 专业版 · 企业版 · 请求频率

其他报错

DNS 超时

DNS 解析 · 网络超时

TLS 证书失败

no matching manifest(架构)

账号

失败是否计费

manifest · blob · 计费

申请开发票(企业 / 个人)

企业 · 个人 · 工单

修改登录密码

网站 · 仓库 · 重置

注销账户

工单 · 数据 · 注销

原理

mirrors 不生效

daemon.json · 重启

去掉域名前缀

docker tag · 重命名

指定架构拉取

ARM64 · AMD64 · 多架构

latest 与「最新」

digest · 版本号 · 标签

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
ghcr.io/kserve/models-web-app
定价查看流量套餐与价格
博客Docker 镜像公告与技术博客
专业版 · 高速稳定拉取镜像
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
50GB 仅 ¥7/年
专业版 · 高速稳定拉取镜像
50GB 仅 ¥7/年
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
用户协议·隐私政策·增值电信业务经营许可证:浙B2-20261007·©2024-2026 源码跳动©2024-2026 杭州源码跳动科技有限公司·商务合作:点击复制邮箱