Kubernetes,简称 K8s,是用 8 代替中间 8 个字符 “ubernete” 而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单而且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。Kubernetes 是一个分布式系统:有一台控制工做机器的主机器,工做被安排在不一样的工做机器上。而后,每台机器在容器中运行工做。html
从单体架构应用,部署应用只有一个或几个,部署与伸缩的确不算是麻烦,此时Kubernetes的确没有必要了。当拥有庞大的微服务架构时,或者每一个租户都有专用实例,同时又有不少租户时,Kubernetes才有意义。数据库
另外,服务应该是无状态的,而且状态应该存储在群集以外的数据库中。Kubernetes的另外一个卖点是对网络的精细渐变控制。并且,也许使用Kubernetes的最广泛的论点是它提供了容易的可伸缩性。微信
若是服务严重依赖磁盘,那么是否要迁移到Kubernetes都应该三思。基本上,一个磁盘只能链接到一个节点,所以全部服务都须要驻留在该节点上。所以,将失去节点自动缩放功能,这是Kubernetes的最大卖点之一。出于相似的缘由,若是不在公共云中托管基础架构,则可能不该该使用K8S。在本地运行应用程序时,您须要事先购买硬件,而不能仅仅凭空想像一下机器。所以,基本上,您也将失去节点自动扩展功能,除非您愿意使用混合云并经过分解公共云中的某些计算机来消除一些多余的负载。网络
若是有一个为全部客户提供服务的总体应用程序,而且须要在各处进行扩展,那么云服务提供商能够经过自动扩展组为您处理该应用程序。确实没有必要为此引入Kubernetes。架构
基于微服务的常规体系结构,该体系结构包含许多经过HTTP和消息传递队列进行通讯的服务。每一个服务都有其本身的数据库,而且大多数服务都在Minio中存储了一些文件。Minio是一个实现S3 API的对象存储系统。运维
当系统容许运行多服务时,很容易就会编写许多服务。其实,这并非个好主意。分布式
首先,分布式应用程序很难编写,服务越多,问题就会越多。
其次,分布式应用程序很难调试,可能须要新的工具和日志记录来调试。微服务
微服务实际上是一种组织层面的扩展技术,当 500 名开发人员在共同开发一个网站时,不一样的开发团队须要独立工做,这时支付大规模分布式系统的成本是有意义的,若是是一个 5 人团队,微服务是没有意义的。工具
除非你的应用程序真的复杂到必须使用 Kubernetes,不然使用其它工具也能够很好的完成工做,例如单机 Docker Compose、相似 Heroku 的系统、用于计算管道的 Snakemake 等等。性能
若有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注个人微信订阅号:
做者:Petter Liu
出处:http://www.cnblogs.com/wintersun/ 本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。 该文章也同时发布在个人独立博客中-Petter Liu Blog。