年开源前程一片光明,或者是容器生态更加美观好的前途

开源推动者与 Android 专家 Jack
Wallen 近日发表了一篇文章,预测了未来的开源局势,他认为
2020
年的开源前途一片光明。

Kubernetes和容器正在改变应用的构建、部署和管理方式。以下这些发行版正在引领这一变革。
如果你需要大规模的容器编排,就可以借助Kubernetes这个项目。这个出自谷歌的开源容器编排系统备受好评,不仅得到了良好的支持,而且发展势头迅猛。

作者:木环、易立

图片 1

尽管如此,Kubernetes仍存在庞大、复杂,并且难以搭建和配置的问题。不仅如此,它还将许多繁重的工作留给了终端用户。因此,最好的方法是不要自己单独去尝试它们,而是寻找一个含有Kubernetes的完整的容器解决方案。在这个解决方案中,Kubernetes会被作为组件得到支持和维护。

编辑:小智

Image: Getty Images/iStockphoto

我在这里列出了12个最具知名度的Kubernetes解决方案,它们实际上是整合了Kubernetes和容器工具的发行版,也就是由众多厂商推出的带有Linux内核和用户层的发行版。

时至今日,IT 圈已经进化到开源与商业不再剑拔弩张的时代。

Jack 总结了以下几个方面:

需要注意的是,本文重点关注的是可在本地运行或可被云托管的软件发行版,不包括如亚马逊EKS或谷歌Kubernetes引擎等专用的云服务。

1.时至今日,没有人质疑容器技术的未来

1、Deepin Linux 将改变开源格局

Deepin 15.11 计划发布一项功能——Deepin Cloud Sync,该功能可能会改变 Linux
发行版的版图。 

此功能会将选择的系统设置同步到云中,例如可以安装操作系统的另一个实例,将其连接到
Deepin Cloud Sync
帐户,然后让该操作系统的新实例自动同步设置。想象一下,部署多个桌面实例将节省多少时间。结合使用
Deepin 桌面的华丽程度,使用者体验将会很好。Deepin Linux
将会引起轰动,将成为许多使用者最喜欢的发行版。

CoreOS Tectonic

现在,没有人会否认容器技术的作用与地位。2013 年 Docker
问世,热度迅速蹿升并被大范围使用,如此势头在开源界当属少见。

2、预装 Linux 的机器会更多

这将有助于 Linux
提升其市场份额,甚至可能首次达到接近两位数的水平,相信会有更多的 OEM
厂商开始销售预装 Linux 的计算机。目前已经有
System76、Dell、Pine64、Lenovo、ThinkPenguin 与 Star LabTop 等,到 2020
年底,预计不仅预装 Linux 的小型 OEM 会增加,也有一些较大的 OEM。预计
Acer、HP 与 ASUS 都会加入竞争。

CoreOS提供了专注于容器的Linux发行版,并且可以与Docker兼容,不过它有着自己的镜像格式和运行环境。与此同时,还提供了一款企业级Kubernetes发行版。两者一起共同构成了CoreOS
Tectonic堆栈的基础。

DataDog 连续三年发布 Docker 问卷调查,2017 年报告显示 Docker
的采用率上升 40%。

3、开源将主导其企业

在企业业务中,开源无处不在,它在云、容器、大数据、物联网、边缘计算等领域中都是基础。目前 Linux
在企业领域中尚待征服的是台式机。

到 2020 年底会有改变,原因是安全。预计 Windows
勒索软件攻击将再次增加,这将导致一些企业寻找更可靠的替代方案,也就是
Linux。意识到多少工作流和工作能力依赖于开源的公司也可能会推动这一转变。

CoreOS操作系统Container
Linux与众不同,主要是因为它们被作为一套容器化组件交付。这样一来,操作系统的自动更新可以在不影响应用正常运行的情况下顺畅地进入到生产环境中。CoreOS还表示他们可以对Kubernetes进行一键更新。CoreOS
Tectonic可以在亚马逊网络服务、微软Azure和裸机上运行。

调查数据显示 2015 年起就有不少大型公司已经开始尝试使用 Docker,并且近
60% 的企业宣称使用 Docker 的机器规模超过 500 台,不过 100-499
台规模的使用比率也获得了显著上升。有分析认为 Docker
的出现在早期解决的是大公司痛点问题,而现在 Docker
正在寻求成为各类公司的通用平台技术。

4、Docker 将反弹

这里说的是 Docker 项目而不是 Docker 公司。2019 年对
Docker 来说并不好,Kubernetes 成为了首选的容器编排工具,但是相信 Docker
将会有一些发展,这些发展可能包括更强大、友好的
swarm 工具或新的客户端工具,以使编排容器集群变得容易。

能够使得 Docker 复出的原因是易于管理,随着 Kubernetes
变得越来越强大,它也变得越来越复杂,如果 Docker
可以在保持其功能和灵活性的同时恢复简单性,则它将重新获得一些市场份额。

Canonical 版的Kubernetes发行版

Sysdig 调查了 4.5 万个企业,统计显示平均每台机器上会运行 10
个容器实例,甚至有企业在一台机器上启用 95 个容器实例。当 Docker
逐渐生产环境中不可或缺的部分之后,势必要寻求工具更高效地管理和编排这些容器。目前市面上被广为熟知的编排方案是
Kubernetes、Mesos、Amazon ECS、Google Engine 等,而 Docker
也推出了自己的原生系统编排方案。

5、开源自动化将令人恐惧 

由于推动了更高效率的 CI/CD 管道的发展,我们见证了令人印象深刻的自动化技术的兴起。借助
Helm、Terraform 和其它以 Kubernetes
为中心的工具,可以创建可自我更新、测试代码并且在出现问题时不将其推向生产的系统。 

到 2020
年,开源自动化将接近科幻小说的程度,其系统会自行“思考”,并且我们将首次体验一种基于经验(来自
AI)和预测进行自我优化的系统。最大的问题是:这些系统将与任务隔离多远,一旦它们通过某个未知事件范围,我们是否能够将其关闭?

Ubuntu
Linux的开发商Canonical也推出了自己的Kubernetes发行版。Canonical版的Kubernetes发行版的一大卖点是它们立足于已得到广泛推崇并部署的Ubuntu
Linux发行版。Canonical称,其堆栈可以在任何云端或本地运行,并且支持由CPU和GPU驱动的工作负载。付费用户可以让Canonical工程师远程管理他们的Kubernetes集群。

2.Kubernetes vs Docker Swarm 两股流派

6、NVIDIA 将展示其 Linux 的巨大惊喜

NVIDIA 宣布在 2020 年将为 Linux 推出一个很大的惊喜,相信 NVIDIA
计划做这样的事:为 Nouveau 驱动程序做贡献,或者开源其官方 NVIDIA
驱动程序。NVIDIA 看到了很多东西,而加入 Linux 是前进的唯一途径。 

对于 Linux 来说,这将是一个巨大的胜利,其原因有两个:Nouveau
驱动从未如此出色地用于游戏;如果 NVIDIA 开始为 Nouveau
驱动做出贡献或将其官方驱动开源,那么这可能是 Linux
台式机游戏的福音,并且可以推动 Linux 普及率的上升。玩家会喜欢比 Windows
更可靠和安全的平台,我们将看到 Linux
不仅会以两位数的市场份额狂涨,而且可能会超越 macOS 成为第二名。

(文/开源中国)    

Canonical 和 Rancher 实验室共同推出了 一款名为云原生平台的产品,该产品将
Canonical的Kubernetes发行版与Rancher的容器管理平台整合到了一起。其理念是使用Kubernetes来管理每个集群中运行的容器,同时使用Rancher来管理多个Kubernetes集群。Cloud
Native Platform 将随 Rancher 2.0 一起推出,目前仅提供了测试预览版。

Kubernetes
出身于谷歌,是其多年大规模容器管理技术的开源版本,在容器浪潮中完成了短时间内的迅速发展,是目前容器生态中最受欢迎的开源项目。项目于
2014 年 6 月首次亮相 GitHub,即 Docker
项目开源的一年多之后;项目已经被捐赠给
CNCF组织,其目标是成为“跨集群的应用级别容器部署、扩展和运维自动化平台”,它会支持包括
Docker 在内的一系列容器工具。

Docker 社区版/Docker 企业版

而 Docker Swarm 则是 Docker 主推的原生的集群工具,意图让用户像使用单机
Docker API 一样来驱动整个集群。2016 年 7 月发布的 Docker1.12 把 Swarm
内置到 Docker 中,这种内置的做法引来了一些争议,有人认为这对 Kubernetes
和 Mesos 造成了一定的威胁。

对于我们当中的大多数人来说,Docker就是容器。自2014 年以来,Docker
拥有了自己的集群和编排系统Docker Swarm,直到近期它们还是 Kubernetes
的竞争对手。然而在2017 年 10
月,Docker宣布将不做任何修改处于原本状态的Kubernetes作为Docker社区版和
Docker Enterprise 2.0 的标准插入式组件。

在很多人眼里,Kubernetes 更开源、汇聚了更多的力量,而 Docker Swarm 则是
Docker 处于商业化的本心。这里,先抛开 Kubernetes 和 Docker
的历史背景,也不提两者社区背后曾经有过的争论;我们单纯从技术设计的角度来看看两者技术层面的差异。

简而言之,Docker公司已经认识到自己将会遇到大麻烦,并承认Kubernetes比Swarm更适合管理大型复杂的容器环境。尽管如此,Docker仍然为低强度工作保留了其初始的集群系统,比如位于防火墙后面的本地应用,这些应用在数量上不会有大的增长。

遵循的两种网络标准

Heptio Kubernetes付费版

在不同的用户环境中,如公共云、专有云、混合云中,容器的网络模型都有不同之处,为此容器平台提供了插件机制,来支持不同的网络实现。目前关于容器网络接口的配置主要有两种标准:容器网络模型和容器网络接口

为了提供基于 Kubernetes 的服务和产品,Kubernetes 的两位发明者Craig
McLuckie 和Joe Beda 共同创立了Heptio。他们的第一个主要产品是Heptio
Kubernetes 付费版,这是一项需要付费的 Kubernetes
部署服务,由Heptio提供24/7 全天候支持。起步价为每月 2000 美元。

CNM 由 Docker 主导,吸引了 Cisco、VMware 等公司的应用;而 CNI
更归属社区,被运用于 Mesos、Cloud Foundry、K8S 之中。

Heptio的主要卖点是提供没有厂商锁定的企业级Kubernetes。该产品可以运行在公有云或私有硬件上。由Heptio提供的所有Kubernetes配置管理工具都是开源的,补丁可以直接推送到受支持的集群。

CNM 是 Docker 主导的网络方案,而且 libnetwork 和 Docker
原生编排等能力紧密集成在一起,内置的服务发现和负载均衡等能力对于开发者而言非常友好。但是正因如此,也对网络驱动的实现带来了一定挑战,在
Docker 17.06 中 Swarmkit 开始支持 node scope
网络,会简化一部分网络模型支持的复杂性。

Mesosphere DC/OS

CNI 是社区主导的网络方案,整个方案很简洁,只提供基本的网络管理和 IPAM
管理接口,同时和其他网络能力保持正交。好处是网络驱动容易实现,三方编排可以方便地控制网络接口和容器对象的生命周期。不足之处则是,编排系统需要集成多个方案才能完整解决用户的诉求,比如在
Kubernetes 中,DNS 和 Ingress 都是通过 addon
的方式实现的,这也为部署和维护引入和复杂性。

Mesosphere DC/OS通过Apache
Mesos将一组机器转变成可动态分配给多个应用的单个资源。Kubernetes被支持作为DC/OS
上众多应用程序包中的一个,允许用户跨 DC/OS
群集安装、运行和更新Kubernetes。

两种设计的对比

DC/OS 本质上是否是一个Kubernetes发行版值得商榷。这主要是考虑到Kubernetes
并不完全是 DC/OS
的一部分,但可以像其他被支持的应用一样通过DC/OS来部署,就像Linux应用可通过Linux发行版的软件包管理系统进行管理一样。尽管如此,Mesosphere使用Kubernetes的方式严格遵循Kubernetes
的工作方式。例如,他们使用Kubernetes
的主流社区发行版以确保与现有工具集有着高度的兼容性。

CNM 是 Docker 提出的规范。Docker 引擎中的 libnetwork 是 CNM
的缺省实现,现在 CNM 已经被 Cisco Contiv, Project Calico,Weave
等项目所采纳。阿里云也提供了基于 CNM 的 VPC,MacVLAN 等网络驱动。CNM
提供了 Docker daemon 与网络驱动实现之间的控制接口。Docker
提供了原生网络驱动包括 none, bridge, overlay 以及 Macvlan/Ipvlan
等。除了 Linux 容器支持,Libnetwork 也推出了对 Windows 的支持。通过
CNM,Docker 也可以由第三方插件获得更多的网络驱动支持。