先从架构层面分析
最传统的架构是所有的页面链接都是建立在一个域名之上,一旦主web服务器down机那么所的有服务都无法打开
传统架构的优缺点:
优点:
- 开发简单,集中式管理
- 基本不会重复开发
功能都在本地,没有分布式的管理和调用消耗
缺点:
效率低:开发都在同一个项目改代码,相互等待,冲突不断
- 维护难:代码功能耦合在一起,新人不知道何从下手
- 不灵活:构建时间长,任何小修改都要重构整个项目,耗时
- 稳定性差:一个微小的问题,都可能导致整个应用挂掉
-
微服务的概念:
为了不影响用户的使用,提升应用服务的健壮性,把每个链接都拆分成一个独立的一个服务,单独的模块,相对于其它模块互不影响,对于能够拆分成单独模块的服务简称微服务
- 对于每个独立的服务都是一个单独的容器运行而来的(假设所有的服务都是由docker部署的),当web服务器处于访问压力过大时如何实现资源的弹性伸缩,服务的自动发现,以及版本的自动更新,如果这些管理都是通过人力来完成,那么将消耗大量的人力和时间
- 如果有一个统一的管理工具,那么就可以省去很的人力和物力。
- 我们知道kvm虚拟机多的时候可以由openstack来管理,容器数量太多的时候可以通k8s来编排管理
docker前期编排工具:
- docker-compose docker-swarm docker-machine
- docker-compose 主要是单机编排工具
- docker-swarm 主要是管理多台docker主机的工具
- docker-machine 主要负责把单台docker主机加入到集群中的工具
其它编排工具有:mesos+Marathon
- mesos idc的系统,是资源统一的管理工具,不能直接托管容器运行,必须提供上层的一个接口才能实现(marathon) ,Marathon还可以作为容器编排平台,为容器工作负载提供扩展和自我修复
kubernetes容器编排工具
- 它的是意思是舵手、飞行员,此技术早期在google公司使用,称为borg已经使用将尽有10几年的历史,
- k8s于2014出现,用go语言重写一遍,只有短短几年的时间占据市场80%以上
- 2015年7月 发布kubernetes 1.0, 加入cncf基金会
- 2016年,kubernetes干掉两个对手,docker swarm,mesos marathon 1.2版
- 2017年 1.5 -1.9
- 2019年: 1.13, 1.14 ,1.15,1.16
k8s的特点
- 自我修复、自动实现水平扩展、自动实现服务发现和负载均衡、自动发布和回滚、支持密钥和配置管理、存储编排、任务批量处理执行
k8s架构模型

