Kubernetes,你不知道TA是谁?请进来一下。若说云应用开发是不可避免的下一代开发热潮,那么Kubernetes就是你一定要认识的对象。做过传统应用的同学应该还记得,曾经多少次在开发环境运行正常的程序,在测试环境不行,在测试环境通过后的程序,部署到生产环境还不行,而且原因千奇百怪,因此,那个年代会修电脑的网管才是个好程序员,要不然活不过一个版本。容器的出现缓解了这个问题,容器比如Docker将开发用到的依赖和环境打包成一个容器,将容器直接部署到测试环境、生产环境,开发什么样就什么样。然而,更复杂的程序比如大数据、人工智能、机器学习等,会涉及跨物理机、跨虚拟机、跨云平台等等多主机多容器多组件的协调运行和管理则需要一项新的工具,他就是Kubernetes。
1、Kubernetes印象
一句话,Kubernetes(简称K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。
为了实现这一目标,KUbernetes提供了一些系列工具来部署这些应用、根据需要扩展应用、并管理应用变更,并帮助你优化容器底层的相关硬件。而且,Kubernetes的设计允许应用随需重启和跨系统移植。Kubernetes本身不是Paas(Platform as a Service)工具,而更像一个Paas 基础平台,它允许用户自己选择不同类型的应用框架、语言、监控和日志工具等,Paas平台可以在它上面运行。
Kubernetes是一个用go语言开发的项目,在github上可以找到它的源码。
2、Kubernetes的爸是Google
Kubernetes出生在google,吸收了google在大规模生产应用负载运行方面的15年经验,并凝聚了社区的最佳创意和实践。2014年,google将Kubernetes开源,现由Clould Native Computing Foudation托管管理,你可以在私有云、公有云、混合云等任何框架下运行它。自从K8s开源后,吸引了来自世界各地很多开源社区的开发者关注和参与。目前,在来自google、red hat 的工程师以及一些其他贡献者的积极努力下,K8s在开源社区的发展非常迅速。
3、Kubernetes的工作原理
Kubernetes的主要组织单元是Pod,一个Pod就是一组容器,被管理在同一个主机、虚拟机或者节点上可以方便地相互通信。多个Pod可以组成一个Service(服务)协同工作,并且可以通过一个标签系统组织起来并将这些Pod对象做为元数据存储在Kubernetes中。然后,所有这些都可以通过API、预定义指令和客户命令行以一致的、可预测的方式精心安排好。