文档结构  
可译网翻译有奖活动正在进行中,查看详情 现在前往 注册?
原作者:未知    来源:kubernetes.io [英文]
kube    计算机    2017-01-07    1评/353阅
翻译进度:已翻译   参与翻译: vincentsun (10)

Kubernetes是什么?

Kubernetes 是一个 用于自动化部署、扩展和应用容器操作的开源平台,可以用于管理主机集群,提供容器为中心的基础设施。

利用Kubernetes,你能够快速和高效地响应用户需求:

  • 快速和可预测地部署你的应用。
  • 运行时扩展你的应用。
  • 无缝部署新的特性。
  • 仅使用你需要的资源,优化硬件使用率。

我们的目标是构建一个组件和工具的生态系统,从而减轻在公有和私有云上运行应用的负担。

第 1 段(可获 1.11 积分)

Kubernetes 是:

  • 可移植的:公有云、私有云、混合云、多云(跨云)
  • 可扩展的:模块化,可插拔,可部署钩子、可组合
  • 自愈的:自动放置应用,自动重启,自动复制,自动扩展

Kubernetes项目由Google在2014年成立。 Kubernetes 的建设是基于 Google运行大规模生产工作15年的经验,以及社区的最佳想法和实践。

准备好 开始了吗

为什么使用容器?

在这里找到使用 容器 的原因。

Why Containers?

部署应用的 传统方式 是将应用通过操作系统打包管理器安装在主机上。这么做的缺点是将应用的可执行文件、配置文件、库文件和生命周期混在一起,并与主机的操作系统混在一起。我们可以创建不可改变的虚拟机镜像来获取可预测的改动和回滚,但虚拟机很重量级,而且难以移植。

第 2 段(可获 1.63 积分)

部署应用的新方法 是基于操作系统级别虚拟化,而不是硬件虚拟化,部署容器。容器之间是互相隔离的,并与主机隔离;它们有自己的文件系统,它们不能看到其余容器的进程,它们的计算资源使用是有界的。它们比起虚拟机更容易构建,并且由于它们与底层的基础设施和主机的文件系统是解耦合的,它们能在不同的云和操作系统类型和版本之间移植。

由于容器小而快,一个应用可以打包在一个容器镜像中。这个一对一的容器到镜像的关系解锁了容器的好处。利用容器,不可改变的容器镜像能在开发/发布时创建,而不是部署时创建,因为每个应用不需要和其余的应用栈组合在一起,也不需要和生产基础设施环境耦合在一起。在开发/发布的时候生成容器带来了从开发到生产的一致环境。类似地,容器比起虚拟机要透明的多,这使得监控和管理更容易。在容器的进程生命周期由基础设施管理而不是被容器内部的一个进程管理器隐藏时,更是这样。最后,在一个容器一个应用的模式下,管理容器等同于管理应用的部署。

第 3 段(可获 2.65 积分)

下面是容器优点的总结:

  • 敏捷的应用创建和部署:比起使用虚拟机镜像,创建容器镜像更为简单高效。
  • 持续开发、集成和部署:容器提供了可靠和频繁的镜像创建和部署,且易于回滚(由于镜像的不可改变性)。
  • 开发和运营的担忧分离:在开发/发布时,而不是部署时创建应用容器镜像,从而将应用与基础设施解耦。
  • 开发、测试和生产环境一致性:在笔记本电脑上运行结果和在云上运行结果相同。
  • 跨云和操作系统版本的可移植性:可以在Ubuntu、RHEL、CoreOS、on-prem、Google 容器引擎等任何地方运行。
  • 应用为中心的管理:提高了抽象的级别,从在虚拟硬件上运行操作系统,到使用逻辑资源在操作系统上运行应用。
  • 松耦合的、分布式的、弹性的、自由的 微服务 应用被拆分成更小的、独立的片段,并能被动态部署和管理——而不是跑在一个大型的、专有的机器上的一个笨重的单片应用栈
  • 资源隔离:可预测的应用性能。
  • 资源利用率:高效的、紧密的。
第 4 段(可获 2.14 积分)

为什么我需要Kubernetes,它能做什么?

至少,Kubernetes 能够在一个物理或虚拟的机器集群上,调度和运行应用容器。同时,Kubernetes 允许开发者“断开”与物理或虚拟机器的“脐带”,从主机为中心的基础设施转移到容器为中心的基础设施,从而带来了容器内在的所有优势和好处。Kubernetes 提供基础设施来搭建一个真实的容器为中心的开发环境。

Kubernetes满足一系列在生产环境中运行应用的公共需求,如:

第 5 段(可获 1.06 积分)

上述这些提供了平台即服务(PaaS)的简单性,以及基础设施即服务(IaaS)的灵活性,并有利于横跨基础设施提供商的可移植性。

第 6 段(可获 0.89 积分)

想了解更多细节,请查看 用户手册

为什么Kubernetes是一个平台,以及Kubernetes如何成为一个平台?

尽管Kubernetes提供了大量的功能,总会有新的场景会受益于新的特性。特定于应用程序的工作流能被编排为流线型,加速开发者速度。可以接受的特别编排最开始经常需要鲁棒的大规模自动化。这就是为什么Kubernetes同样被设计为一个平台,用于搭建模块和工具的生态系统,来使得部署、扩展和应用管理更容易。

标签帮助用户按他们喜欢的方式组织他们的资源。注释允许用户通过自定义的信息来装饰他们的资源,从而让他们的工作流得以运行,同时为管理工具提供一个容易的方式来对保存状态检查点。

第 7 段(可获 1.49 积分)

另外,Kubernetes控制平面是基于开发者和用户同时能使用的同一套API搭建的。用户能够写他们自己的控制器、调度器等;如果他们愿意,也可以调用能用一个通用命令行工具访问到的他们自己的API

这种设计使得一系列系统能够搭建在Kubernetes之上。

Kubernetes不是:

Kubernetes不是一个传统的包含一切的平台及服务(PaaS)系统。我们在重要的地方保留用户的选择。

  • Kubernetes不限制支持的应用类型。它不会规定应用框架(比如Wildfly),限制支持的语言运行时环境(如Java,Python,Ruby),仅迎合12-因素应用,也不会将“应用”与“服务”区分开。Kubernetes的目标是支持各种类型的载荷,包括无状态的、有状态的、以及数据处理工作载荷。如果一个应用能在一个容器中运行,它都能很好地在Kubernetes上运行。
  • Kubernetes不提供中间件(如信息总线),数据处理框架(如Spark),数据库(如mysql),或者集群存储系统(如Ceph)作为内嵌服务。这样的应用在Kubernetes之上运行。
  • Kubernetes没有一个一键式部署的市场。
  • Kubernetes不干扰源代码转换到镜像的空间。它不部署源代码,也不搭建你的应用。持续集成(CI)工作流是一个不同用户和程序有他们自己需求和倾向的领域,因此我们支持在Kubernetes上分层CI工作流,但不限制它如何工作。
  • Kubernetes允许用户选择日志、监控和报警系统。(尽管我们为验证功能而提供了一些集成。)
  • Kubernetes不提供或授权综合应用配置语言/系统(例如jsonnet)。
  • Kubernetes不提供或采纳任何综合的机器配置、维护、管理或自愈系统。
第 8 段(可获 3.7 积分)

在另一方面,一系列PaaS系统运行在Kubernetes之上,比如OpenshiftDeisEldarion。你也可以搭建你自定义的PaaS,根据你的选择与CI系统集成,或者只是使用Kubernetes:带来你的容器镜像并部署在Kubernetes上。

由于Kubernetes在应用层面,而不仅仅是硬件层面进行操作,它提供可以一些PaaS通常提供的一般的适用特性,比如部署、扩展、负载均衡、日志、监控等。然而,Kubernetes不是单片的,而且这些默认的解决方案是可选的和可插拔的。

第 9 段(可获 1.21 积分)

另外,Kubernetes不仅仅是一个“编排(Orchestration)系统”;它消除了编排的需求。“编排”的技术定义是一个定义好的工作流的执行:做A,然后B,然后C。与之相比,Kubernetes是有一系列独立的、可组合的控制进程组成的,能够持续驱动当前状态转换到希望的状态。如何从A到C应当是不重要的:做到这一点就好。集中的控制也不是必须的;Kubernetes的方法更接近于“choreography(舞蹈、编排)”。这带来了一个更好用的、更强大、鲁棒、弹性的和可扩展的系统。

Kubernetes 是什么意思?K8s呢?

Kubernetes 这个名字起源于希腊,意思是“舵手”或“航海员”,并且是“管理者”和 “控制论”的词根。K8s是一个缩写,将8个字母“ubernete”替换为8。

第 10 段(可获 1.68 积分)

文章评论

vincentsun
这里面的图片本来好像就有点问题,可以请推荐这篇文章的同学再看一下!