随着微软和亚马逊高BIG加入云原生计算基金会(简称“CNCF”),Kubernetes做为开源的容器编排产品正在成为业内管理容器环境的实实在在的标准。编程
Kubernetes是一个开源容器编排框架。它的功能很强大,不只能够在运行Docker容器的同时确保它们不间断运行,还能够作到在容器崩溃或主机崩溃时,从新启动容器,就像VMware HA同样,但以一种不一样的方式来处理。Kubernetes支持许多不一样的云提供商和裸机部署,您能够在Linux操做系统内核进行部署,并在用户层运行容器。后端
大规模管理容器或容器管理。Kubernetes在希腊语中有领航员或舵手之意。Kubernetes的基本目的是确保您能够规模化管理全部容器。虽然容器自己使应用程序打包和部署过程更容易了,可是如此大规模地管理这些容器仍须要作不少的工做。Kubernetes的基本功能是让咱们能够将一个容器集群做为一个单一系统进行管理,这样可让咱们可以正确轻松地开发同时简化管理全部这些容器的操做。这种方法有助于开发团队将应用程序编码到容器中,并将其移交给Ops,而且Ops能够直接运行这些容器(而无需关心其余)。设计模式
让咱们回过头来看容器自己,其实它本质上是一种封装应用程序的方法,使应用程序易于在任何地方运行。然而,运营团队须要管理系统来管理这些容器。而Kubernetes框架就能够管理大量的容器环境。服务器
一个容器是一个密封的应用,封装成开发,运输和部署的标准单元。一个容器镜像包含代码,运行时库,依赖关系,配置——即将其做为轻量级包运行所需的全部内容。开发人员能够将其代码及其依赖项打包到容器对象中,而后能够在任何环境中运行它,并且因为它们一般是小对象,因此能够将大量容器推送到单个机器上。Docker是当今世界最受欢迎的容器之一,而且它还很年轻截止目前才4+岁,可是最原始的容器技术却能够追溯到古老的Unix时代。网络
Pods是多个协同工做容器单元的组合。一个节点(Pod)是可使用Kubernetes建立,且易于发现和管理的最小的可部署运行的单元。架构
若是您想要运行多个容器——咱们假设一个特定的Web服务器的四个副本和一个数据库——例如Kubernetes有一个技术来支持。这个技术被称为副本(replication)控制器,它能够确保指定数量的pods副本正在您须要的特定服务上运行。框架
Kubernetes的一个基本前提是,咱们能够执行一些名为“所需状态管理”的内容,这意味着咱们能够为集群服务提供一个特定的配置,而且能够由集群服务在基础设施中执行这种配置。编程语言
若是您配置k8s(Kubernetes的简称),能够在物理主机中运行四个pod,而且因为某些缘由,若是某些pod崩溃,那么k8s将自动在任何可用的集群节点上启动一个新的pod,以确保您具备所需的四个状态副本可用。大数据
API是在集群服务以前执行所需状态管理的主要组件之一。这是系统的一个关键构件。系统的第二个关键构件是worker。一个worker真的只是一个容器主机。workers也做为与k8s集群服务进行通讯的Kubelets(补充:Kubelets主要工做是管理Pod和容器的生命周期)。
Services 是一组协同工做的pods。它是一个包含容器的pod的逻辑结构。Services 将pods聚合在一块儿就像一个Web服务器场所,例如,几个pods(Web服务器/内容仓库)一块儿提供一个服务。您还能够考虑负载平衡器做为后端服务的示例。一般您会注意到,单独的独立服务须要多个单一的容器 - 他们一般须要一组共存容器,一个用于核心功能,其余更多用于支持分析,实时监控,数据库服务,日志记录等活动。
标签(Labels)经常使用于逻辑构造和组织一组对象。标签也能够用于搜索不一样逻辑或物理对象。
容器化环境中的基本构造:
Kubernetes承诺将云原生基础组件集中在一块儿,并提供将应用程序扩展到企业级的能力。基于对容器的普遍支持,Kubernetes可根据您的应用需求提供更多的灵活性来选择容器。
随着Java,Go,.Net等普遍的编程语言和框架支持,Kubernetes已经获得了开发社区的大力支持。Kubernetes内置支持各类数据库,ETL系统和大数据分析。
集群能够在任何地方安装和运行。Kubernetes彻底与供应商无关,并获得Google Compute Engine,Vagrant,RackSpace,CoreOS,Fedore,Azure,AWS和vSphere等多个云提供商的支持。它是GitHub最活跃的项目之一。
Kubernetes能够跨不一样的云平台,并提供快速有效地响应增加客户需求的能力。应用程序能够按需扩展,应用程序的部署能够更快,更具预测性。在无需在公共或私有云环境中使用大量资源的前提下,为开发人员提供了扩展更多加强功能和新功能的灵活性。
原文连接:What Kubernetes can do for container orchestration(译者:ds_sky2008)