华为云 CCE 部署 Python FastAPI 服务:镜像构建、探针调优与弹性伸缩实战

举报
yd_253000176 发表于 2026/10/27 09:10:50 2026/10/27
【摘要】 以一个 Python FastAPI 工单查询服务为例,走通华为云 CCE 镜像构建与 SWR 推送、Deployment 探针配置、Service 与 Ingress 暴露、HPA 弹性伸缩的完整链路,附三处真实踩坑与调优结论。

把本地跑通的 Python FastAPI 工单查询服务搬到华为云 CCE,是我这个月最值的一次改造。目标很明确:滚动发布不中断、实例故障自愈、早高峰自动扩容。下面按落地顺序记录配置和踩坑。

第一步,构建镜像推 SWR。Dockerfile 用 python:3.11-slim,先 COPY requirements.txt 再 pip install,最后才拷业务代码,改业务不会重建依赖层,构建时间从 90 秒降到 12 秒。docker login 后把 tag 打成 swr.cn-north-4.myhuaweicloud.com/demo/fastapi-ticket:v1 再 push。仓库与集群同区域走内网,省掉大量网络排障。

第二步,编排 Deployment。三个配置项必须给对:readinessProbe 指向 /healthz,只检查依赖是否就绪,未就绪不接流量;livenessProbe 只查进程存活,别把数据库连通性写进去,否则数据库抖动会让整批 Pod 一起重启;resources.requests 必须填,cpu 200m、memory 256Mi,limits 给 500m 和 512Mi,因为 HPA 的 CPU 利用率以 requests 为分母。

第三步,暴露服务。Service 用 ClusterIP,前面挂 Ingress 绑 ELB,健康检查路径同样填 /healthz,超时 3 秒。ELB 健康检查间隔默认 10 秒,缩容时流量可能短暂打到正在退出的 Pod。

第四步,配 HPA。执行 kubectl autoscale deployment fastapi-ticket --cpu-percent=60 --min=2 --max=6。实测早高峰 CPU 到 58% 时副本扩到 5 个,晚高峰回落后缩回 2 个。

踩过三个坑。一是探针路径写成 /health,服务实际是 /healthz,Pod 长期 Not Ready,滚动发布卡在中途,用 kubectl describe pod 看到 Unhealthy 才定位。二是最初忘了写 resources.requests,HPA 目标值显示 unknown/60%,扩缩容完全不生效。三是缩容瞬间出现零散 502,uvicorn 收到 SIGTERM 直接断连,在 preStop 加 sleep 15 秒并让服务优雅退出后消失。

效果:首屏接口 P95 从 480ms 降到 160ms,副本自动从 2 扩到 5,CPU 稳定在 55% 左右,日常基本不用盯。CCE 的价值不在省机器,而在于把发布、自愈、扩容变成可版本化的声明式配置。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。