资讯专栏INFORMATION COLUMN

Docker 1.12的哪些特性使它更像 kubernetes?

chaos_G / 2104人阅读

摘要:本文涵盖了中的六大新特性内置命令服务发现自愈功能安全负载均衡滚动升级,相关的使用文档和视频链接也都包含在里面。同时,内部负载均衡要求一个可用的容器。现在开箱即用的负载均衡,上公开暴露的端口在所有节点都是可以访问的。

Docker 1.12版本最近刚刚发布,这篇文章对它的新特性进行了概述和对比描述。本文涵盖了 Docker 1.12 中的六大新特性:内置 swarm命令、服务发现、自愈功能、安全、负载均衡、滚动升级,相关的使用文档和demo视频链接也都包含在里面。

内置 swarm 命令

Docker engine 中增加了 docker swarm 命令,它用于取代之前通过容器创建swarm节点的方式。现在,创建一个swarm节点,只需要在每个节点上运行一条命令。在第一个节点上运行以下命令:

”是该节点的内网IP,同一个网段的的其他节点可以通过这个IP访问该节点。“” 是该swarm与其他swarm 节点上进行通信的端口。Docker文档使用端口2377,但你可以自己指定。

上面的命令运行成功以后,将生成一条新命令,新命令用于将其它节点添加到swarm集群。它看起来像这样:

在其它节点上运行上面的命令以后,我们就得到了一个可以正常运行的swarm集群。 我们对比一下之前和现在部署swarm 的区别:

之前:

● 要建立一个swarm,我们需要在每个节点上启动主swarm和代理容器 。

现在:

● 不需要swarm 容器、可以用本地 Docker swarm 命令创建swarms。

想了解更多关于如何在1.12中建立 swarm ,请查看官方文档(https://docs.docker.com/engin...)。

服务发现

服务是一个关键的更新,后面我们会看到,它也促成了很多其它功能的更新。docker service命令告知集群中服务的期望状态。这种机制下,当节点或容器挂掉,智能编排服务成为可能。

在定义服务状态时,Docker service 跟 Docker-compose 的概念很相似。Docker-compose 也有 scale 相关的命令,但缺点在于:这些命令仅第一次确保状态是正确的,但没有持续的监控。有了新的 Docker service 命令,Docker-compose 可能会被打上“仅用于开发”的标签。

在以前的 Docker 版本中,我们必须找到不同的方式来扩展服务,并确保它们拥有期望的的副本数量。一些人用 Kubernetes或 Amazon EC2解决这个问题, 也可能使用 Docker-compose,虽然只有在第一次运行时能够保证服务的状态。

之前

● 我们使用其他工具如 Kubernetes 或配置文件来定义服务,用于 Amazon EC2照顾容器编排。

现在

● 使用 Docker service 告知 swarm 服务的期望状态,这意味着 Docker 原生支持服务编排。

有关如何部署服务的详细信息,参见这里

(https://docs.docker.com/engin...)。

自愈能力

目前,swarm 集群完全具备自愈能力。任何服务宕掉后, Docker engine 本身就可以对它进行重新调度,不需要任何其它编排工具。

以前我们需要一个外部编排层(如Kubernetes),现在编排这一层已经内置到 Docker engine中。

添加和删除节点后,swarm集群都能够正常工作,从这个层面上来说swarm是可伸缩的。尽管swarm 没有挂掉,且可伸缩,但是它不能编排容器。

如果一个 swarm 节点挂掉,容器集群不能感知到到它需要在另一个节点上启动一个新容器,从而取代挂掉的主机上的容器。在Docker 1.12中,这种情况不会再出现。

在Docker 1.12 中,当服务的容器个数不满足要求时,swarm会自动在其它节点上启动新容器。

虽然这是一个巨大的飞跃,但它仍然有些地方需要改进。如果你添加新节点到一个swarm集群, 并想把服务的部分容器调度到新添加的节点上,swarm还不能满足你的需求,但这一点会很快改善。

之前

● 虽然 swarm集群 本身具有自愈能力,但是swarm 上的容器不支持此特性。我们不得不手动或借助工具(如 Kubernetes)来确保服务的实例个数达到期望值。

现在

● swarm 现在意识到服务应该运行在集群上,当容器或节点宕掉时会重新调度。

关于swarm 如何面对节点故障并重新部署已经被杀掉的服务,查看官方完整的demo:

(https://www.youtube.com/watch...)。

安全

在1.12 中,Docker负责所有节点之间的加密。我们很早支持swarm节点间的加密通信,但是迄今为止,配置一直是一个痛点。因为我们需要一个根证书认证服务器。

现在,Docker 在每个节点上都运行一个CA 服务器,这使得CA 服务器可以在默认情况下的节点间启用 TLS 加密。

设置手动加密的另一个痛点是认证循环,但是Docker engine 1.12 已经为我们做了这些事情。

因此,现在加密 swarm 节点间通信不仅更容易,而且是默认启用!

之前

● swarm 节点之间的通信可以使用TLS 加密,但需要额外设置。如果你真的想这么做,需要设置CA或使用第三方的根证书。

● 当证书过期时你需要管理证书

现在

● 所有节点间的通信在默认情况下进行加密, swarm 绑定CA 并为你管理证书,包括证书循环。

了解更多关于Docker 1.12 如何负责节点间加密的更多信息,参考这篇官方博客文章(https://blog.docker.com/2016/...)。

负载均衡(路由网)

Dockers 路由网使网络变得更容易。关键的概念是,如果你在服务上发布一个端口,它是跨整个集群全局发布的,所以在任何节点上的端口都可以到达该服务。

同时, Docker 内部负载均衡要求一个可用的容器。这意味着你服务中任意节点上的请求都将跨重复的容器进行透明负载均衡,即使容器在不同的节点上传播,或者节点的请求来自容器所在的不同节点。这真的很酷,可以让我们减少很多工作。

如果你需要SSL或代理请求到多个服务(不是跨服务的负载均衡),那么无论如何你都需要设置代理。最大的不同是,代理不需要跨单个容器上负载均衡,只需要跨服务进行负载均衡,这样代理就更简单了。

之前

● 要对一个服务的几个副本容器设置负载均衡,那么需要设一直一个proxy,通常使用nginx、haproxy等工具配合 consul动态配置容器的IP。

现在

● 开箱即用的负载均衡,swarm 上公开暴露的端口在所有节点都是可以访问的。

● 不需要知道容器的IP地址,而是通过服务名称。Docker 处理不同容器副本的内部路由和负载均衡。

关于如何使用路由网,看看这个演示视频

(https://www.youtube.com/watch...)。

滚动部署

这是一个非常酷的功能。由于Docker engine已经知道集群服务的期望状态,对Docker engine 发送指令,让它逐个更新副本(或两个两个的,使用 --update-parallelism 标签来配置 )。这意味着我们可以安全透明的更新容器副本。

关于“透明”,你当然要确保你的容器是向后兼容的,否则最好销毁旧的容器,再去更新所有的容器。重点是虽然有了滚动更新以后,我们就不需要把更新规则写成脚本去实现透明部署。

之前

● 必须手动管理部署,或者蓝绿部署,或者手写脚本实现滚动升级。

现在

● 使用更新服务的命令实现滚动升级。

Docker的团队做了一个滚动更新的演示视频,看看这里

(https://www.youtube.com/watch...)。

Docker 1.12 使管理 Docker swarm 整体更简单容易。不需要外部编排(如:consul ),这意味着较少的移动部件。有了这些变化,Docker 正慢慢成为目前占据主导地位的编排工具(如 Kubernetes)的真正替代者。我们拭目以待。

本文由时速云翻译,如若转载,需注明转载自“时速云”

原文链接:http://blog.nimbleci.com/2016...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26687.html

相关文章

  • Q & A | 怎样让自己更像一个 Kubernetes 存储专家?

    摘要:邢舟开源与开放标准工程院软件工程师背景回顾月日,中国社区全新改版线上课堂,邀请邢舟老师以直播的方式进行了一场以存储概览为题的线上讲解,反响热烈。为更好地为学员整合问答,中国社区特别整理了本期模块,感谢邢舟老师百忙之中进行校对。 邢舟 /IBM 开源与开放标准工程院软件工程师 背景回顾:8 月 2 日 20:00,K8sMeetup 中国社区全新改版线上课堂,邀请邢舟老师以直播的方式进行...

    guyan0319 评论0 收藏0
  • Docker Swarm前世今生

    摘要:当然此时的局限性较大,比如没有副本和负载均衡的概念,这导致服务无法高可用当然也更不存在什么服务网络管理和跨节点数据存储这些东西没有服务模型集群中服务间关系和启动顺序编排也很复杂于是就有了下面的的诞生。 showImg(https://segmentfault.com/img/remote/1460000015317037?w=1885&h=1153); 概述 在我的《Docker S...

    lemon 评论0 收藏0
  • Kubernetes 1.12全新发布!新功能亮点解析

    摘要:距离上一次版本发布三个月之隔,是今年的第三个主要版本。证书轮换证书轮换功能现已进入状态。这一功能可以在当前证书到期时自动续订密钥和服务器的证书。更多包含许多修复和内部组件的改进,此次的更新明显侧重于稳定核心以及使现有的功能成熟。 Kubernetes1.12已于今日全新发布!Kubelet证书轮换、资源配额优先级、挂载命名空间、对Azure的增强支持等10大亮点功能,本文为你一一解读!...

    Developer 评论0 收藏0
  • 三年后,我们从 Docker 转到了 RKT

    摘要:在被纳入后,与之争日趋白热化。一如微软曾经试图通过在中安装来排挤,现在正在尝试将融入到,以此来打击,,和。如同微软确确实实提升了的性能。浏览器突出了微软的优势,所以他们在年内都没有继续开发了。 在 Swarm 被纳入 Docker 1.12后,Swarm 与 K8S 之争日趋白热化。本文作者 Adriaan de Jonge 身为 Xebia CTO ,专精 DevOps 及持续交付,...

    Achilles 评论0 收藏0
  • Kubernetes 尝鲜

    摘要:是谷歌官方根据自己容器经验开源的产品。当然,这不可能是,而且它的底层是替换成了,但是这不能掩盖它解决的问题。因此笔者决定尝试玩玩。不然启动会报错。 背景 容器技术在目前很火,而且确确实实的解决了很多的痛点,但是如果只使用目前 Docker 官方提供的 engine+compose+swarm 方案,是很难再实际生产中使用的。Kubernetes 是谷歌官方根据自己容器经验 Borg 开...

    KunMinX 评论0 收藏0

发表评论

0条评论

chaos_G

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<