Kubernetes 是一个用于容器集群的自动化部署、扩容以及运维的开源平台。
使用Kubernetes,你可以快速高效地响应客户需求:
我们希望培育出一个组件及工具的生态,帮助大家减轻在公有云及私有云上运行应用的负担。
Kubernetes项目是Google在2014年启动的。Kubernetes构建在Google公司十几年的大规模高负载运维经验之上,同时结合了社区中各项最佳设计和实践。
想了解为何要使用容器技术?
Old Way 是在主机上,通过包管理器安装应用程序来部署。这样做的缺点是,必将涉及到系统的应用程序,配置,库,以及生命周期等问题。 为了构建一个能够更新和回滚的虚拟机镜像,虚拟机会变得非常笨重。
New Way 是基于操作系统级虚拟化,而不是硬件虚拟化的容器来部署。这些容器彼此隔离:它们有自己的文件系统,也不能访问对方的程序,他们的运算和资源都是隔离的。 它们比虚拟机更容易建立,并且因为它们与底层系统没有耦合关系,所以可以很方便的在所有云服务器上分发。
由于容器是小而快,每个应用程序可以装在一个容器镜像里。是1对1的应用程序到容器镜像的关系。基于容器技术,镜像可以在编译或者发行时创建,而不是部署的时候才去创建。 因为每个应用程序不依赖于其他的程序,及系统基础环境。 在构建/发行容器的时候就保证了,开发环境和生产环境的一致性。同样,容器是远远比虚拟机更加透明化,这更加方便监控和管理。 当容器里程序的生命周期是由底层系统管理的,而不是容器内部黑盒管理。最后,管理每个单个应用程序的容器,和管理应用程序是一样的。
下面是一些关键点:
Kubernetes不仅仅只能调度编排物理机或者虚拟机上的容器, 然而,Kubernetes 还可允许开发者剪断与物理机或者虚拟机的脐带,从 以主机为中心 的基础设施转移到一个以 容器为中心 的基础设施上,继承容器的所有优势和好处。 Kubernetes 提供了一个,能够建立真正 以容器为中心的 开发环境的基础设施。
Kubernetes 可以满足一般生产环境的需求, 例如:
提供了具有灵活的 IaaS 服务的 PaaS 平台,让你的应用提高了可移植性,不再依赖基础设施。
更多详细内容,请看用户指南.
尽管 Kubernetes 提供了很多种解决方案,但总会有一些意想不到的应用场景。 往往一开始需要更强大的自动化特定编排,可以让应用程序开发流程简单化,加速开发速度。这也是为什么 Kubernetes 设计成为用于组件构建和工具组成的生态系统,使之便于部署,扩展和管理应用程序的一个平台。
Labels 可以让用户随心所欲的来组织他们的资源。 Annotations 能够让用户自自定义布置资源信息,以方便他们的工作流程,并提供管理工具,让检查变得更简单。
此外, Kubernetes 控制面板 可以让开发人员用相同的 APIs 来构建。 用户可以编写自己的控制器,调度等。 如果选择使用他们自己的 APIs,可以通过命令行工具去实现。
这样的设计使其他系统可以打造在 Kubernetes 之上。
Kubernetes 不是传统的 PaaS(平台及服务)系统. 我们觉得让用户选择是更重要的.
另一方面, 确实有不少PaaS系统运行在Kubernetes之上,比如Openshift, Deis和Gondor。同样你也可以将定制的PaaS系统,结合一个持续集成系统再Kubernetes上进行实施:只需生成容器镜像并通过Kubernetes部署。
由于Kubernetes运行再应用层而不是硬件层,所以它提供了一些一般PaaS提供的功能,比如部署,扩容,负载均衡,日志,监控,等等。无论如何,Kubernetes不是一个单一应用,所以这些解决方案都是可选可插拔的。
Kubernetes 并不是单单的”编排系统”;它排除了对编排的需要: “编排”的技术定义为按照指定流程执行一系列动作:执行A,然后B,然后C。相反,Kubernetes有一系列控制进程组成,持续地控制从当前状态到指定状态的流转。无需关注你是如何从A到C:只需结果如此。这样将使得系统更加易用,强大,健壮和弹性。
Kubernetes 这个名字源自希腊语,意思是“舵手”,也是“管理者”,“治理者”和“cybernetic”的源头。K8s 是Kubernetes的简称(用数字『8』替代中间的8个字母『ubernete』)。