K8s 云原生架构实战:从单体到微服务的演进

记录一次完整的云原生迁移过程,涵盖容器化、服务发现、CI/CD 流水线搭建,以及踩过的坑和最佳实践。

为什么迁移到云原生?

  • 弹性伸缩:流量高峰自动扩容,闲时缩容省钱
  • 故障隔离:单个服务崩溃不影响全局
  • 发布效率:从手动部署到 GitOps,发布从小时级降到分钟级

架构全景

1
2
3
4
5
6
7
8
9
┌─────────────────────────────────────────┐
│              Ingress (Nginx)            │
├─────────────────────────────────────────┤
│  API Gateway → 服务网格 (Istio)         │
├────────┬────────┬────────┬──────────────┤
│ 用户服务 │ 订单服务 │ 支付服务 │ 消息服务      │
├────────┴────────┴────────┴──────────────┤
│           持久层 (PostgreSQL + Redis)    │
└─────────────────────────────────────────┘

关键决策

1. Helm vs Kustomize

最终选了 Kustomize —— 轻量、无需额外学习 Helm 模板语法,K8s 1.14+ 原生支持。

2. 服务网格要不要上?

初期没上 Istio,用 K8s Service + Ingress 足够。服务网格在微服务数量超过 20 个时才体现价值。

3. 可观测性三板斧

  • 日志:Loki + Promtail(比 ELK 轻量 10 倍)
  • 指标:Prometheus + Grafana
  • 追踪:Jaeger(分布式链路追踪)

踩坑

  • imagePullPolicy: IfNotPresent 没设,每次都拉镜像,慢得离谱
  • 资源限制没设,一个服务吃光节点内存
  • Health Check 没配,滚动更新直接断流

📝 完整 YAML 配置清单和部署脚本已整理,后续开源。

本博客文章采用 CC BY-NC-SA 4.0 许可协议
服务器推荐

腾讯云 · 新用户专属优惠

本博客部署在腾讯云服务器,稳定运行一年多。如果你是新用户或想搭建个人项目,推荐试试腾讯云的优惠活动。

查看优惠详情 →
阅读
上一篇
Hugo + NGINX 自动化部署脚本:一行命令发布博客
下一篇
Three.js 粒子星系:从曲线到有机质感的探索
广告

📚 关注公众号,免费获取技术材料

扫码关注公众号,回复「资料」领取:

  • 📘 企业架构设计模板
  • 📗 数据治理实施指南
  • 📙 工业软件技术白皮书
公众号二维码

长按或扫描二维码