云原生 AI 应用部署:模型服务也要按普通服务治理
云原生 AI 应用部署:模型服务也要按普通服务治理
一、AI 应用不是 Kubernetes 特权用户
很多 AI 应用一部署就开始特殊化:镜像巨大、启动慢、内存暴涨、日志没有结构、探针随便写、资源限制不敢设。理由听起来都合理:模型要加载、推理要资源、冷启动就是慢。但生产环境不吃理由。模型服务也是服务,必须被治理。
云原生 AI 应用部署的第一原则,是把模型当成普通服务先管起来:健康检查、资源限制、滚动发布、日志指标、灰度回滚,一个都不能少。特殊能力可以有,特殊待遇不能无限开。
二、部署链路:从镜像到可观测
flowchart LR
A[模型与代码] --> B[构建镜像]
B --> C[部署到 K8s]
C --> D[探针与资源限制]
D --> E[流量灰度]
E --> F[指标与告警]
这条链路里最容易偷懒的是探针。AI 服务的 readiness 不能只看端口开没开,要看模型是否加载完成、依赖是否可用、预热是否结束。否则刚启动就接流量,第一波请求会直接变成事故。
三、Deployment 示例:资源和探针别省
apiVersion: apps/v1
kind: Deployment
metadata:
name: ai-infer
spec:
replicas: 2
template:
spec:
containers:
- name: server
image: registry.example.com/ai-infer:20260702
resources:
requests:
cpu: "2"
memory: 8Gi
limits:
cpu: "4"
memory: 16Gi
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 20
periodSeconds: 5
资源限制不是摆设。没有 requests,调度器不知道该把 Pod 放哪;没有 limits,异常请求可能拖垮节点。AI 服务更要讲资源边界,因为它消耗通常比普通后端更狠。
四、工程边界:冷启动要被产品知道
AI 服务启动慢,不只是运维问题,也是产品问题。扩容后多久可用,发布时是否会抖,低峰缩容后首个用户是否等待,这些都会影响体验。团队要把冷启动写进容量策略:保留热副本、预拉镜像、提前加载模型、灰度观察指标。
取舍方面,热副本成本高,但延迟稳定;缩到很低省钱,但冷启动伤体验。不同业务要不同策略。内部批处理可以省,在线交互就别太抠。云原生不是只会省资源,它也要保护体验。
还要把模型版本纳入发布记录。镜像版本、模型权重、Prompt 模板、运行时参数都可能影响输出。一次质量波动,不能只查代码 commit。AI 应用的发布对象比普通服务更多,治理也要更细。
日志也要结构化。至少记录 request_id、model_version、prompt_version、input_tokens、output_tokens、latency_ms、error_type。不要把用户原文全量打进日志,但关键元数据必须有。否则线上延迟升高或成本暴涨时,团队根本不知道是模型变慢、Prompt 变长,还是请求量变了。
还要给推理服务设置优雅关闭。Pod 被滚动更新时,应先停止接新流量,等待当前推理完成或超时,再退出。AI 请求可能比普通接口更长,直接杀进程会让用户看到半截回答。云原生部署不是只写 YAML,也要让应用配合生命周期。
五、总结
云原生 AI 应用部署,先按普通服务治理:资源、探针、灰度、日志和指标做扎实。模型服务可以特殊优化,但不能逃离生产规则。
更多推荐
所有评论(0)