什么是Kubernetes

(图片来自: kubernetes.io)
如果对于Docker/Container还不太熟悉的读者,不妨先看看容器介绍内容, 也许会对什么是container更加了解.
Kubernetes是一个协助我们自动化部署、扩容以及管理容器化应用(containerized applications)的系统。相较于需要手动部署每个容器化应用(containers)到每台机器上,Kubernetes可以帮我们做到以下几件事情:
同时部署多个containers到一台机器上,甚至多台机器。
管理多个container的状态。如果提供某个服务的container不小心crash了,Kubernetes会检测到并重启这个container,确保持续提供服务。
将一台机器上所有的containers转移到另外一台机器上。
提供机器高度扩展性。Kubernetes cluster可以从一台机器,扩容到多台机器共同运行。
为何使用Kubernetes
笔者过去曾参与过大型项目开发,上线产品、排错、与测试功能都包在一起。每次发布新功能、修改代码都非常胆战心惊,哪怕是一个bug也会影响整个系统功能。而相较于这样单体架构(Monolithic Architecture) 的服务,微服务(microservices)架构 大大减少代码复杂度,将每个服务依照各自业务需求独立出来,以Restful API互相调用。而microservice概念的导入,改善了我们过去所面临的问题:
将庞大的项目拆分为几个不同的子项目,当代码量够小、容易理解、开发效率能够大大提高;
各个服务之间也可独立部署,不因一个服务瘫痪而瘫痪整个系统
各团队可以依照自己的需求使用适合自己的语言、类库开发
每个服务也可以依照自己的需求,选择在不同机器上部署
然而,当系统中的微服务越来越多时,管理上也会面临到很大的挑战。 Kubernetes的出现让我们管理这些微服务应用更加方便。
Kubernetes的优点
可以跑在任何地方
Kubernetes可以运行在任何地方:不论是私有云、公有云(如AWS、Google Cloud Platform)、或是混合云。
高度模块化High Modular
每个服务都被分割成一个container,不论是要做修改、扩充、甚至将服务迁移到另外一台机器,都可以快速部署、快速实现。
活跃的社区Open source & active community
Kubernetes是开源 的,受到社区的关注度也非常高。
Google的背书 Backed by Google
最初版的Kubernetes事由Google内部 Borg team的成员编写且现在仍在持续维护。Google使用它们自身的系统Borg管理容器化应用长达十余年。Kubernetes的目的即是将Borg最精华的部分取出来,使得开发者能够更简单、直接应用。
Q&A
笔者也在持续学习Kubernetes中,如有对于文章有任何疑问或建议,也欢迎大家留言给我 :)