docker + kubernetes=共生?相爱相杀?

2017年的云计算市场,有一个领域获得了空前的关注 -- Kubernetes。 Kubernetes可以追溯到2014年,当时Google公开发布了该项目的开源代码。2017年,Kubernetes广受欢迎,几乎所有的主要IT供应商都支持这个平台。

小数今天推送的这篇文章,为您揭示Kubernetes与Docker容器之间是怎样的关系?对企业客户又意味着什么?

1、Kubernetes是一个开源项目,提供容器编排,部署和管理功能。自 2015 年 7月以来,它一直是由Linux基金会下的云原生计算基金会(CNCF)运营。尽管Kubernetes不再只是Google的一个项目,Google仍然贡献了远大于比其他任何机构的代码量。

将AIX应用程序迁移到云的最佳实践 Kubernetes 2017年如此耀眼,2018年Kubernetes将继续成为一支重要的力量。要理解这点,首先要认识到这项技术和云计算的完美契合之处。

在过去三,四年中,越来越多的企业选择使用Docker容器来部署云工作负载。Docker容器提供的既是运行容器化应用程序的运行时,也是封装和交付容器应用的格式。容器提供了直接在虚拟机管理程序内部改善可移植性和效率的承诺。

随着容器使用量的增长,需要对容器集群进行编排,调度和控制。这就是Kubernetes适合的地方。Kubernetes提供了大规模运行容器的编排系统和管理平台。还提供了一系列API抽象,使其他技术可以插入,使平台具有很强的可扩展性,并且能够支持各种不同的供应商部署用例。

比其核心编排能力更重要的是,Kubernetes在2017年成为实现多云世界的事实平台。虽然AWS在2017年继续主导公有云,但企业仍然希望能够在多个云上部署和运行应用程序。

容器提供了运行应用程序的基本包装,可以在任何支持容器的云上部署。有了Kubernetes,就有了一个平台,可以帮助企业在运行Kubernetes的云或本地部署管理容器的部署和编排。

云中的Kubernetes 一颗种子总会发芽,结出硕果。在作为开源技术的短短3年时间里,Kubernetes成为基于容器的工作负载的默认编排引擎。虽然捐赠的是1.0版本,但是谷歌在大规模运行容器方面有十年的研究和经验。

Google是否在内部使用Kubernetes?来自Kubernetes博客:“Google上的许多开发人员都是以前在Borg项目上的开发人员。我们已经将Borg的最佳创意融入了Kubernetes,并试图解决用户在多年来与Borg确定的一些痛点。”

谷歌在一些内部项目中使用Kubernetes的声音很清晰,且很快就会改变一些现有的关键产品。即使未来需要更好的展示,Kubernetes也可以轻松定制 – 最大的好处是可以根据需要将自定义组件与现有组件进行混合和匹配。

以下是Google在过去几年 Kubernetes 的搜索量增长情况:

Google在Kubernetes上运行的Linux容器(LXC)并不是那么容易处理,而且需要掌握更多的专业知识。

2017年初,Kubernetes 只支持谷歌云平台(GCP)和谷歌Kubernetes引擎(GKE),但是在一年中,扩展到包括所有三家主要的公有云供应商。

二月份,微软正式加入支持Kubernetes的行列,宣布 Azure容器服务支持Kubernetes。去年11月,Kubernetes在亚马逊弹性容器服务(Amazon EKS)首次亮相。

除了公有云支持外,CNCF在9月份还宣布了Kubernetes认证服务提供商计划。该计划现在有25个合作伙伴公司开发和销售自己的Kubernetes发行版并提供管理服务。为了确保不同Kubernetes供应商和平台之间的互操作性,CNCF于2017年11月推出了认证Kubernetes计划,目前拥有42个成员公司。

Docker
Kubernetes部署大多使用Docker作为默认的容器引擎,除此之外还有CoreOS的rkt等。就其本身而言,Docker有一个叫做Swarm的自身的编排系统,首次亮相于2014年12月。

在许多企业的容器部署中,多数情况是Docker容器引擎正在被使用,Kubernetes被选择作为编排工具,而不是Swarm。10月17日,在与Kubernetes进行了三年的市场竞争之后,Docker Inc.宣布也将支持Kubernetes。

要清楚的是,Docker公司并没有放弃自己的Swarm容器编排系统; 相反,它同时支持Swarm和Kubernetes,让企业可以选择想要使用的平台。

在接受eWEEK 视频采访时,Docker首席执行官史蒂夫·辛格(Steve Singh)解释了为什么选择拥抱Kubernetes。Singh说:“Kubernetes为我们所做的事情是消除了任何潜在的混乱和冲突。我们有爱Kubernetes的客户,也有爱Docker Swarm的客户,不应该强迫客户在两者之间做出选择,而是让他们选择想要使用他们的东西。 ”

Kubernetes之前的Docker 让容器变得更酷,更易用。由Docker公司推出的Docker 在LXC功能的扩展之外,增加了多种功能。包括跨机器的可移植部署,版本控制,组件重用以及现在的 Docker Hub ,它提供了“开发测试流水线自动化,100,000个免费应用程序,公共和私有注册中心”。

以下是Google for Docker搜索量增长的图表:

Kubernetes 1.9和超越
2017年,Kubernetes更新了四个主要版本,增加了新的特性和功能。第一个主要版本是3月27日推出的Kubernetes 1.6,带来了新的可扩展性和稳定性功能。Kubernetes 1.7于6月29日发布,提供了帮助管理和保护容器基础设施的新功能。第三个版本是1.8更新,于9月28日推出,并支持基于角色的访问控制(Role-Based Access Control,RBAC)。

Kubernetes 1.9是2017年的最后一次重大更新,于12月15日正式推出。Kubernetes 1.9的亮点是Apps Workloads API,它为 Kubernetes 中长时间运行无状态和有状态工作负载提供了基础。

这是Kubernetes转型的一年,2017开源的努力始于一家公有云供应商,终于年底支持所有三家主要的公有云提供商。该项目也从Docker竞争对手的角色转到被Docker拥抱。多云的承诺长久以来只是一个承诺。作为一个可以在任何公有云提供商上启用容器应用程序工作负载的抽象层,随着Kubernetes 2017年的兴起,2018多云承诺将成为现实。

2、Kubernetes正在巩固自己作为事实上的容器编排引擎的地位,而Docker帮助实现了这一点。尽管Docker一直是领先的容器技术,但容器编排市场还没这么清晰。2017年末,随着包括Docker在内的主要云平台提供商支持Kubernetes和一些令人惊讶的CNCF成员资格的增加,这种情况发生了变化。

正确的时机 “时机就是一切”,对于Kubernetes来说,这似乎是正确的。通过让容器更易用,Docker正在推动Kubernetes的发展。事实上,它已经成为每个公司发展的共生关系 。使用Kubernetes的人越多,使用Docker的也会越多,反之亦然。

根据 Portworx2017年度容器采购调查 (2017年2月至3月完成),有两项统计数据显示: “对于拥有超过5000名员工的公司,Kubernetes的使用率为48%,主要编排工具占33%。” “79%的样本选择Docker作为主要容器技术。”

为了进一步加持 Kubernetes 领导者地位,大型云计算和软件供应商们纷纷加入,以支持Docker容器的工作负载。

Kubernetes商业化产品
自从开源以来,Kubernetes有很多商业化产品,在过去的几个月,这个list上取得了重大且令人印象深刻的突破。

以Google(Google ContainerEngine),Red Hat(OpenShift),CoreOS(Tectonic),Canonical和 Apprenda 为长期商业供应商(长期以月计)。微软和VMware也已经提供了对Kubernetes的支持,最近已经全面all-in 推出。

2017 Kubernetes 得胜之年
2017年下半年,主要云服务商将Kubernetes添加到其核心产品中。值得注意的公告包括:
亚马逊网络服务(AWS)于八月份以白金会员 (最高级别) 加入了CNCF。虽然AWS加入CNCF与 Kubernetes 没有直接关系,但AWS拥有大量客户在运行容器和Kubernetes。

之后,10月份,Cloud Foundry基金会宣布了由Kubernetes提供支持的Cloud Foundry Container Runtime(CFCR),而Pivotal Cloud Foundry(与VMware合作 )则 于10月份在VMworld 宣布了Pivotal Container Service(PKS)。Pivotal和VMware都作为CNCF的白金会员注册; 再次,可用的最高水平。

VMware正在与Kubernetes合作的事实是一个明确的信号,Kubernetes和容器希望保持相关性。许多人质疑容器和云计算是否会取代虚拟机。虽然专家认为他们在企业中存在共存的空间,但可以看看VMware这位虚拟化之王的明显转变。

在十月之后,Microsoft 将 Azure容器服务 (ACS)更名 为AKS,K代表Kubernetes。这与他们以前的观点有很大的转变,即 ACS的好处之一是它支持多种编排工具 。

即使是Docker Inc.也已经屈服,最近在其Docker企业版框架中添加了本地Kubernetes支持。这对Kubernetes来说是一个重大的胜利,并将推动Docker自己的编排平台Docker Swarm的未来发展。

Docker甚至委托独立基准测试来对比Swarm和Kubernetes 。两者肯定都有用例,但Kubernetes得到Google支持的事实是经过了战斗性测试的(还记得 PokémonGO吗 ? ),并且拥有巨大的社区支持,企业把它看作标准的容器编排引擎。

这对企业意味着什么? Kubernetes和Docker一直在坚持。随着公司迁移到云端,他们会发现他们有一些需求PaaS或IaaS最适合,还有一些其他需求容器(有些人称之为CaaS)会更适合。

为了享受到上云带来的好处,企业正在转向DevOps和云原生开发。采用DevOps时,企业开始使用运行在容器中的微服务,将应用程序构建为独立的组件。这些团队将会变得更小( 亚马逊CTO Werner Vogels 创造了“双比萨团队”(two-pizza team)一词),并且能够独立于应用的其他组件更新其“服务”的功能。

通过将开发工作分解为专注于解耦服务的小型团队,企业可以扩展开发工作,并更快地为客户/用户提供价值。现在,已然不是每六个月更新一次的代码库,而是按需随时进行更新。

自动化是复杂的抽象,为了使这项工作自动化,提供一个简单,可重复的方式来安全地交付和部署软件,团队会更频繁地执行。

技术的抽象和多样使监控成为难题的重要部分。企业拥有数千个独立移动的部件,其中许多可能显示为传统监控解决方案的黑盒子。随着企业迈向云原生,越来越多的应用程序正在云中运行,专门设计并运行良好的监控方法至关重要。

2018年将发生什么?Kubernetes给业务需求和企业客户能够带来的改变已经明晰,作为构建和运行云原生应用的平台乘胜追击,能够在多大比例的企业实现软着陆呢?大概套用那句老话是最准确的:前途是光明的,道路是曲折的。

原文链接: 1、2018 is the year of Kubernetes – with some help from Docker
https://www.tuicool.com/articles/QBFjAf6
2、2017 Year in Review: Kubernetes Enables a Multi-Cloud World
http://www.eweek.com/cloud/2017-year-in-review-kubernetes-enables-a-multi-cloud-world