阿里云服务器安装环境
上周发完 Docker+K8s 部署模型的文章,后台收到最多的留言是:这套系统听起来就很贵,我们小公司玩不起啊。
其实真不是这样。我花了 3 天时间,用一台 100 块钱一年的云服务器,照样跑起了完整的 Docker+K8s 系统,还成功部署了一个销量预测模型。今天就把省钱秘籍全公开,从服务器选购到实际部署,每一步都附具体操作,看完你就知道 —— 技术这东西,真不一定非得花大价钱。
100 块钱能买到什么样的服务器?
先澄清一个误区:不是非要阿里云、腾讯云的高配服务器。我对比了市面上的云服务商,发现很多平台的 学生机轻量应用服务器 性价比高得惊人:
配置:2 核 CPU、2GB 内存、50GB 硬盘、1M 带宽价格:阿里云学生机 96 元 / 年,腾讯云轻量应用服务器 108 元 / 年够用吗:实测能跑 3 个模型实例 + K8s 基础组件,日均处理 10 万次请求没问题千万别被 配置表 吓住。我之前在电商公司用的测试服务器,也就这个配置,照样支撑了 3 个人的开发团队做模型测试。关键在于怎么优化,把资源用在刀刃上。
[插入图片 1:云服务器购买页面截图,圈出 100 元左右的套餐信息]
三步把服务器变成 迷你数据中心
第一步:给服务器 瘦身,关掉没用的功能
新买的服务器就像刚装的 Windows 系统,自带一堆用不上的服务,先手动清理一遍:
停止并禁用不需要的服务sudo systemctl stop postfix 邮件服务
sudo systemctl disable postfix
sudo systemctl stop cups 打印服务
sudo systemctl disable cups
清理系统垃圾
sudo apt-get autoremove -y
sudo apt-get clean
查看内存使用情况(确认清理效果)
free -m
腾讯云搭建云免服务器
这一步能腾出 300-500MB 内存,对 2GB 内存的服务器来说,简直是救命稻草。
第二步:安装 精简版 Docker+K8s
直接装官方完整版 K8s 肯定卡爆,我们用轻量级替代方案:
安装 Docker(这个不能省,但可以优化):安装基础版Dockercurl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
关键优化:限制Docker占用的内存
sudo mkdir -p /etc/docker
cat <
{
"default-shm-size": "256m",
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] 加个国内镜像加速
}
EOF
sudo systemctl restart docker
阿里云服务器被释放
用 K3s 替代 K8s( Rancher 推出的轻量版 K8s,内存占用只有原版的 1/5):安装K3s(只装服务器组件,不装Agent)curl -sfL https://get.k3s.io | sh -s - --no-deploy traefik --no-deploy servicelb
查看是否安装成功(内存占用应该在500MB以内)
kubectl get nodes
为什么选 K3s?它把 K8s 里很多企业级功能(如高可用数据库、复杂网络插件)换成了轻量替代品,对小服务器特别友好。
[插入图片 2:服务器内存占用截图,显示 K3s 启动后内存使用约 450MB]
部署模型的 省钱诀窍
服务器配置低,就得在模型部署上精打细算。我总结了三个关键技巧:
技巧一:给模型 减肥,去掉多余的 脂肪
模型文件瘦身:用joblib压缩模型,把 1GB 的 XGBoost 模型压到 300MB 以内依赖库精简:只装必要的 Python 库,比如用requirements.txt指定精确版本:flask==2.0.1scikit-learn==1.0.2
joblib==1.1.0 只保留这三个必要库
Docker 镜像优化:用多阶段构建,最终镜像体积控制在 500MB 以内(之前做的销量预测模型镜像只有 380MB)技巧二:限制资源使用,别让一个模型 吃撑
在 K8s 的 Deployment 配置里,严格设置资源上限:
model-deploy.yaml里的资源配置resources:
requests:
cpu: "500m" 起步用0.5核CPU
memory: "512Mi" 起步用512MB内存
limits:
cpu: "1000m" 最多用1核CPU
memory: "1024Mi" 最多用1GB内存
这样即使模型突然 发疯,也不会把服务器资源耗尽。实测这个配置下,2GB 内存的服务器能同时跑 2 个模型实例,还留有余地。
技巧三:关闭暂时用不上的功能
K8s 里有些功能对小服务器来说太 奢侈,可以临时关掉:
关闭 HPA 自动扩缩容:手动控制副本数量(默认 1 个,流量大了再手动加到 2 个)简化网络插件:用 K3s 自带的flannel网络,别装 Calico 这类重型插件禁用日志收集:小服务器存储有限,暂时关掉 ELK 这类日志系统,用kubectl logs手动看日志实测效果:100 块的服务器能扛住多大压力?
我用 Locust 做了个压力测试:
测试条件:1 个模型实例,并发用户 50 人,每秒 20 个请求服务器表现:CPU 使用率稳定在 60% 左右,内存占用 1.2GB(剩余 800MB),响应时间平均 180ms极限测试:把并发用户加到 100 人,服务器撑了 30 分钟才出现偶尔超时(这种流量对小公司来说已经算高峰了)更重要的是,这套系统一年的服务器成本才 100 块,连一顿聚餐钱都不到。
[插入图片 3:压力测试曲线图,显示并发 50 用户时响应时间稳定在 150-200ms]
给小公司的 3 条实用建议
先搭起来再优化:别一开始就追求完美,用 100 块的服务器先跑通流程,遇到具体问题再针对性解决按需扩容:业务增长了,再升级到 200 块的服务器(4 核 2GB 内存),平滑过渡善用免费资源:很多云厂商对新用户有 1 年免费的 2 核 4GB 服务器,完全可以拿来练手其实对中小公司来说,技术工具的核心是 解决问题 而不是 追求高端。我见过不少团队,用着几万块的服务器,跑的业务量还不如我这 100 块的服务器。
你在部署模型时有没有什么省钱妙招?评论区聊聊,点赞最高的送一份《100 元服务器部署手册》,里面有详细的服务器选购链接和配置脚本。
(关注我,下期分享 怎么用闲置电脑当服务器节点,进一步降低成本,小团队也能玩出大花样)
为什么百度云服务器异常
