LichMscy
2020-12-08 16:30:21 +08:00
我们团队现在运行维护着一整套的 k8s 平台和微服务平台,遍布全球十几个数据中心,拥有 20+套集群,最近还合并了另一个团队的 devops 平台,感觉应该有点发言权
其实用 k8s 和团队大小没有强对应关系,团队小就找两三台虚拟机搭一套小集群满足需求即可。我理解微服务所利用的 k8s 特性主要是实现滚动更新、灰度发布以及 hpa 等,还可以利用 cicd 工具一键发布,这些特性不用 k8s 甚至不用 springcloud 都能实现,只是现有比较成熟的方案的确是 k8s+springcloud 微服务。我建议楼主从最小需求做起,切忌过度架构,构建出的组件稳定可用满足最低需求即可。
可以理解基于 k8s 的模块是一套 paas 平台,基于 springcloud 微服务的模块是 saas 平台(当然我们也基于 istio 构建了一套 service mesh 模块,那个才是真正的 sass 平台)。如果从开发角度,专注实现 saas 平台的基本功能就可以了,往后团队大了,面临的问题还有日志采集,服务监控,链路追踪,网关路由,容器网络管理,底层计算资源维护等等等等。
TLDR:最小化架构的话只要能给开发部署和发布版本带来便利即可,比如使用 jenkins/搭建 k8s 进行容器化的初步集成 /使用 k8s 滚动更新 /进行微服务改造并搭建 eureka 和 gateway 管理所有的微服务等等;再发展下去就可以考虑构建一个微服务平台( SAAS )来管理整个微服务的生命周期,包括链路追踪 /API DOC/服务间调用 /配置中心 /分布式事务等等;最终就是一整套 k8s 管理 /微服务管理 /Devops 管理的覆盖开发全开发生命周期的工具链集合。