【译者按】译自 kubernetes官网文档 ,主要介绍kubernetes的基本概念以及应用场景,K8s的设计理念,以及K8s能干什么不能干什么。
Kubernetes是一款应用于集群的, 容器自动部署、扩展和管理的开源平台 ,提供了一种以容器为中心的基础架构。
利用kubernetes,你可以快速高效地响应客户如下请求:
* 应用程序的动态、精准部署
* 应用程序的动态扩展
* 无缝推出新功能
* 按需优化使用硬件资源
我们的目标是提供一套减轻应用程序在公用云或私有云上运行负担的,生态环境的组件和工具。
Kubernetes项目是2014年由Google公司启动的,Kubernetes在 Google公司15年生产环境经验基础上 ,结合了社区的一些优秀点子和实践而构建的。
准备好 开始了 吗?
寻找一下你用 容器 理由?
传统方法 部署应用程序是利用操作系统的包管理器向主机上安装应用,这种方法的一个弊端是应用程序、配置、支撑库以及生命周期等经常与主机操作系统纠缠在一起,当然你也可以构建虚拟机镜像来实现可控的发布,但是虚拟机比较重量化并且其可移植性也不好。
新方法 部署容器则是基于操作系统级别的虚拟化而不是硬件层面的虚拟化实现的,这些容器相互之间以及容器与主机之间是隔离的:它们拥有自己的文件系统,共享运算资源,但它们彼此看不到对方。容器的构建也比虚拟机的构建要容易,由于它们不依赖于运行平台和文件系统,因此可以跨越云和操作系统发行版实现可移植性。
因为容器小而快速,一个应用程序可以打包成容器镜像,这种应用与镜像的一一对应关系,彻底发挥了容器的好处。
容器的优点可以归结为:
Kubernetes可以实现在物理集群或虚拟机集群上调度和运行容器,当然它还可以做得更多。
为了充分发挥容器的优势并将传统的应用部署方式甩开,需要容器的部署与运行独立于基础设施。
然而,当特定的容器不再与特定的主机绑定时, 主机为中心 的基础设施也不再适用:负载均衡、自动扩展等,因此需要 容器为中心 的架构,这便是kubernetes所提供的。
Kubernetes满足了应用程序在生产环境中的一些通用需求,例如:
上述功能提供了平台即服务(PaaS)的简易性以及基础设施即服务(IaaS)的灵活性,提升了跨基础设施移植的方便性。
想得到更多细节内容,参加 用户指南
尽管Kubernetes提供了很多功能,但总有新的应用场景需要新的特性,应用相关的工作流可流水线化以加速开发速度,最初设计的Ad hoc机制经常在扩展时需要更为灵活的自动化。这也是为什么Kubernetes被设计成为一个构建组件和工具生态的平台,使得应用的部署、扩展和管理更为容易。
标签 授权用户可以按需组织他们的资源, 标注功能 能够使用户对特定的资源添加一些定制信息,以方便其工作流的实现,并且为管理工具的状态检查提供了一种解决方法。
此外, Kubernetes控制面板 是基于API进行构建的,这些 API 对于开发者和用户同样适用,用户可以基于此写出自己的控制器、 调度器 等,甚至可以有针对性的用 自己的API 写一些通用的 命令行工具 http://kubernetes.io/docs/user ... rview /)
这种 设计 使得用户可以在Kubernetes基础上构建一些其他的系统。
Kubernetes并不是传统意义包打天下的Paas系统,我们在一些重要的方面保留了用户选择的权利。
另一方面,很多PaaS系统运行在Kubernetes上,例如 Openshift 、 Deis 以及 Gondor ,你也可以定制你自己的Paas,整合一个CI系统,或者仅用Kubernetes也挺好,将容器镜像拿来直接部署到Kubernetes上。
由于Kubernetes工作在应用层而不是仅在硬件层,它提供了一些一般Paas所能提供的通用特性,比如部署、扩展、负载均衡、日志和监控等,但Kubernetes并非一个整体,这些功能都是可选和可插拔的。
此外,Kubernetes并不是一个业务流程系统,它消除了业务流程的需要,业务流程是指按照预定义的工作流执行任务,先A再B再C。相反,Kubernetes包含了一套独立、可组合的控制处理来连续驱动当前状态向所需状态转换,它不关心你怎么从A到C的。中央控制也并不需要,这种方法更像舞蹈,这使得系统更易于使用,也更强大、鲁棒、弹性和可扩展。
Kubernetes一词源自希腊语,意思是舵手或飞行员,并且是总督或控制论的根源。(The name Kubernetes originates from Greek, meaning “helmsman” or “pilot”, and is the root of “governor” and “cybernetic”)。K8s是将中间的8个字母用8来简写的结果。