Kubenetes是一款由Google开发的开源的容器编排工具,它可以解决以下分布式环境下的问题:
调度
你已经得到了这个很棒的基于容器的应用程序? 太棒了!现在你需要确保它能够运行在它应该运行的地方。将应用运行在集群中正确的主机上对你的应用程序而言是很重要的一件事情,因为并不是集群中所有主机都是一样的。
负载均衡
你的应用程序已经启动并且成功运行起来了。 好样的! 现在你需要保证来自客户端的负载(请求)能够均匀的分布到集群的节点当中。这对于你的应用程序能够以最佳的方式利用每台主机的资源来处理客户端负载是非常重要的。你并不希望当中一些容器正在满负荷的工作,而另外一些却处在空闲的状态。
应用伸缩
这时你的容器已经运行起来了,并且客户端负载能够在这些容器当中很好的取得平衡。好极了!而现在你需要能够启动一些新的容器来处理负载(当请求高峰时),同时可以清理掉一些(容器)当不再需要这些容器的时候。这很重要,因为这样才能够有效的(按需的)处理客户端请求的峰值。
集群管理和监控
现在你的应用程序已经可以在这个庞大的集群中高效的运行,这时你必须要管理它。 你需要明确知道它们 (集群中的相关服务)都是正常运行的,如部署,弹性伸缩,负载均衡以及容器的健康状态。当然这并不是一个轻松的活儿。
/////////////////////////////////////////////////我是分割线////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
那么,Kubernetes不是什么?
平台即服务(PaaS)
尽管Kubernetes提供了很多与PaaS相似的功能,如存储管理,集群日志以及监控等。 但是Kubernetes并不是一个真正的PaaS,因为它并不提供诸如操作系统之类的组件,或者提供对Docker或者Java的支持工具,然而Kubernetes却可以和像Bluemix以及OpenShift这样的PaaS平台产品完美融合。
数据处理框架
Kubernetes毫无疑问是一个非常适合于运行大数据应用的框架,但是它并不能执行或者提供与数据处理的框架(如Apache Spark和Hadoop Map/Reduce)相同的功能。然而Kubernetes与Sprak以及Hadoop都能够很好的集成(这里仅举两个例子)。
持续集成
Kubernetes并不能像Jenkins或者其它CI工具一样去构建你的应用程序容器,但(令人惊喜的是)它可以与CI协同工作,以帮助管理应用程序在其生命周期中的更新升级。
/////////////////////////////////////////////////我是分割线////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Kubernetes的核心技术和概念: