📖 sseinfra 平台文档
学生容器开发平台 — 从创建 Pod 到部署应用,一站式开发运维指南
🚀 快速开始
三步上手:创建 Pod → 连接 → 部署
1. 创建 Pod
登录后点击左侧 Pod → + 新建,选择类型和资源:
- cpu — 纯 CPU 容器,适合 Web 服务、数据处理
- gpu — 带 GPU 的容器,适合模型推理、训练
2. 连接 Pod
创建后自动获得:
ssh -p <SSH端口> cloud@ssemarket.cn # 密码在 Pod 详情 → 连接 tab 查看 # 或使用 Web 终端(浏览器内直接操作)
3. 部署应用
两种方式:
- 绑仓库 — 平台自动 clone 仓库并执行
deploy.sh,支持 push 自动部署 - 本地脚本 — 指定 Pod 内脚本路径,平台用 supervisord 托管
应用绑定 0.0.0.0:8080 即可通过公网访问。
Pod
隔离的容器环境,持久存储,SSH/终端访问
部署
Git 仓库一键部署,supervisord 托管,健康检查
数据库
MySQL / Redis / Qdrant / MinIO 按需申请
AI 助手
内置 AI 助手,可在 Pod 内执行命令、分析日志
📦 Pod 管理
Pod 类型
- cpu — 纯 CPU 容器,默认 2 CPU / 4Gi 内存,可调整
- gpu — GPU 容器,默认含 1 张 GPU + 2 CPU / 8Gi 内存
资源规格
Owner 可在 设置 tab 中调整 CPU、内存、持久存储大小。调整 CPU/内存会重启 Pod。
持久存储
/home/cloud 目录持久化,Pod 重启不丢数据。挂载点为主机路径 /mnt/sdb/groups/<pod名>/home。
共享存储(只读)
/shared 挂载了公共模型权重和数据集:
ls /shared/weights/ # 查看可用模型 ls /shared/datasets/ # 查看可用数据集
生命周期
Owner 可启动/停止/重启 Pod。停止会将副本缩容到 0(节省资源),启动恢复到 1。
成员管理
Owner 可邀请其他用户为 Member,或移除成员。非成员可申请加入,待 Owner 审批。
🚀 部署
绑仓库部署
平台 clone 仓库后执行 deploy.sh,由 supervisord 托管进程:
# deploy.sh 示例 pip install -r requirements.txt python app.py
支持 Gitee 和 GitHub 仓库。私有仓库需提供 Token。
本地脚本部署
指定 Pod 内脚本路径(如 /home/cloud/myapp/start.sh),平台直接托管执行。
部署类型
- 常驻服务 — autorestart=true,崩溃自动重启
- 一次性脚本 — 执行完退出,不自动重启
调度类型
- 推理服务 — 绑定指定 GPU,常驻运行
- 训练任务 — 池化 GPU 调度,支持 checkpoint/恢复
健康检查
配置健康检查路径(如 /health),部署后平台等待 HTTP 2xx 响应。失败自动回滚到上一个好的版本。
Push 自动部署
勾选后,push 到指定分支会触发 Webhook,自动重新部署。
环境变量
部署时自动注入以下环境变量:
PORT=8080 LOG_DIR=/home/cloud/logs GROUP_NAME=<pod名> PUBLIC_URL=http://ssemarket.cn:<端口> MYSQL_HOST / MYSQL_PORT / MYSQL_USER / MYSQL_PASSWORD / MYSQL_DB REDIS_HOST / REDIS_PORT / REDIS_USER / REDIS_PASSWORD QDRANT_ENDPOINT / QDRANT_API_KEY MINIO_ENDPOINT / MINIO_ACCESS_KEY / MINIO_SECRET / MINIO_BUCKET CUDA_VISIBLE_DEVICES=<GPU ID> DEPLOY_ID / DEPLOY_NAME / DEPLOY_REF REPORT_URL / REPORT_TOKEN
🗄️ 服务与凭证
MySQL
公共 MySQL 实例,按组分配独立用户/库/密码。
# Pod 内连接 mysql -h mysql.platform-infra.svc.cluster.local -P 3306 -u <用户> -p # 从 ssemarket.cn 本机(经 frp 隧道) mysql -h 127.0.0.1 -P 25006 -u <用户> -p
Redis
公共 Redis 实例,按组分配键前缀隔离。
redis-cli -h redis.platform-infra.svc.cluster.local -p 6379 -a <密码>
Qdrant
向量数据库,按组分配集合前缀和 API Key。
# HTTP http://qdrant.platform-infra.svc.cluster.local:6333 # gRPC qdrant.platform-infra.svc.cluster.local:6334
MinIO 对象存储
S3 兼容对象存储,按组分配桶和访问密钥。
endpoint: http://minio.platform-infra.svc.cluster.local:9000 bucket: <组名> access_key / secret: 在凭证 tab 查看
申请凭证
Owner 在 凭证 tab 中申请,每种服务每组最多一个。申请后凭证自动注入部署环境变量。
📊 日志与监控
新 应用日志
应用将日志写到 /home/cloud/logs/ 目录,平台自动收集展示。在 Pod 详情 → 日志 tab 中可同时查看容器日志和应用日志:
# Python 示例
import logging, os
logging.basicConfig(
filename=os.path.join(os.environ.get('LOG_DIR', '/home/cloud/logs'), 'app.log'),
level=logging.INFO
)
logging.info('应用启动')
# Node.js 示例
const fs = require('fs');
const logDir = process.env.LOG_DIR || '/home/cloud/logs';
const log = (msg) => fs.appendFileSync(logDir + '/app.log', new Date().toISOString() + ' ' + msg + '\\n');
在 Pod 详情 → 日志 tab 中查看所有日志文件,支持实时流和 🤖 AI 分析。
新 资源监控
在 Pod 详情 → 监控 tab 中实时查看:
- CPU / 内存使用量(来自 kubectl top pod)
- GPU 利用率、显存、温度、功耗(GPU Pod)
- Kubernetes 事件流(Normal / Warning)
新 快速模板
在部署 tab 中选择预设模板,一键生成项目骨架并自动部署:
- Flask — Python Web 服务,含 /health 健康检查
- FastAPI — 异步 API 服务,高性能
- Node.js — 原生 HTTP 服务
- Streamlit — 数据可视化应用
- vLLM 推理 — 模型推理服务,OpenAI 兼容 API
部署日志
supervisord 管理的部署服务,stdout/stderr 自动记录到 ~/deploy/<name>/logs/。在部署 tab 中查看,支持实时流。
容器日志
Pod 容器的 stdout 输出(kubectl logs),在完整管理页面的生命周期区域查看。
应用自上报
应用可通过 HTTP POST 上报状态:
curl -X POST "$REPORT_URL" \
-H "Content-Type: application/json" \
-d '{"deploy_id":"'$DEPLOY_ID'",
"token":"'$REPORT_TOKEN'",
"state":"ready",
"metrics":"qps=100 latency=50ms",
"message":"服务正常"}'
🤖 AI 助手
平台内置 AI 助手,支持多种模式:
平台运维 (ops)
在平台主机上执行命令,适合查看系统状态、管理服务。需要 infra.host 权限。
Pod 开发 (build)
在 Pod 内执行命令,适合开发调试、安装依赖、查看日志。需要 Pod 访问权限。
数据库管理 (db)
操作 MySQL / Redis / Qdrant,查看数据、执行查询。
存储管理 (storage)
操作 MinIO 对象存储,上传/下载/管理文件。
使用方式
- 点击右下角 🤖 按钮打开助手面板
- 选择助手类型和目标 Pod(如适用)
- 输入自然语言指令,助手自动执行
- 支持多轮对话、会话管理
日志分析
在日志 tab 中点击 🤖 AI 分析,助手自动分析日志内容,找出错误模式并给出修复建议。
🔌 API 参考
平台提供 REST API,Base URL: http://ssemarket.cn:24000/api/v1
认证
使用 Session Cookie(登录后获取)或 API Token(在个人设置中生成)。
核心端点
GET /groups # 列出所有组 GET /groups/<name> # 组详情 POST /groups/<name>/deploy/<id>/run # 触发部署 POST /groups/<name>/deploy/<id>/stop # 停止部署 GET /groups/<name>/deploy/<id>/logs # 部署日志 GET /groups/<name>/logs # 容器日志 GET /groups/<name>/metrics # 资源指标
凭证端点
GET /groups/<name>/creds # 列出凭证 POST /groups/<name>/creds/apply # 申请凭证 POST /groups/<name>/creds/revoke # 撤销凭证
应用日志端点 新
GET /pods/<name>/app-logs # 列出日志文件 GET /pods/<name>/app-logs?file=app.log # 读取日志内容 GET /pods/<name>/app-logs/stream?file=app.log # SSE 实时流
❓ FAQ
Pod 重启后数据会丢吗?
不会。/home/cloud 是持久存储,重启不丢。但 /tmp 和容器层文件系统会重置。
如何让应用通过公网访问?
应用绑定 0.0.0.0:8080,平台自动将 8080 端口映射到公网。访问地址在连接 tab 中查看。
GPU 怎么用?
GPU Pod 自动注入 CUDA_VISIBLE_DEVICES 环境变量。推理服务绑定指定 GPU;训练任务由调度器池化分配。
如何写日志让平台看到?
将日志写到 /home/cloud/logs/ 目录(环境变量 LOG_DIR),平台会自动收集展示。支持实时流和 AI 分析。
部署失败怎么办?
在部署 tab 中查看日志。如果配置了健康检查,失败会自动回滚。也可以用 AI 助手分析日志。
如何多人协作?
Owner 邀请其他用户为 Member,Member 可 SSH 连接、查看凭证、使用终端。管理操作仅 Owner 可用。
支持哪些仓库?
目前支持 GitHub 和 Gitee 的 HTTPS 仓库。私有仓库需提供 Personal Access Token。