BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Rudder:简化集群中容器的网络配置

| 作者 郭蕾 关注 9 他的粉丝 发布于 2014年9月4日. 估计阅读时间: 3 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

与Docker相关的开源软件越来越多,Docker的生态圈也越来越成熟。近日,CoreOS团队又发布了一款重量级工具Rudder,Rudder 是基于etcd的覆盖网络(overlay network),它能为每个使用容器调度服务(Kubernetes)的主机提供一个子网。Rudder简化了集群中Docker容器的网络配置,更可以大幅度减少端口映射方面的工作。

网络桥接(bridge)是Docker容器默认的网络模式。当Docker启动时,它会在宿主机器上创建一个名为docker0的虚拟网络接口,并随机选择一个IP地址和子网掩码。通过docker0,容器即可与主机进行通信。基本的网络配置Docker可以自动完成,但是一些其它的配置比如端口映射就需要手动指定了。如果在一个集群中每个Docker容器都需要配置端口映射,那将会是一个复杂而又庞大的工作。

如何在管理集群中Docker容器的网络一直是个难点,谷歌的Kubernetes解决了容器的集群管理问题,现在CoreOS发布了Rudder,它可以为集群中的每个主机都创建一个覆盖Mesh网络并指定一个子网,也就是说 Kubernetes 集群中的每个主机都有一个完整的子网,例如机器 A 和 B 可以有 10.0.1.0/24 和 10.0.2.0/24 子网。

Rudder基于CoreOS的分布式键值存储系统etcd构建,并使用UDP通信。etcd用于存储配置数据以及子网分配信息。一旦Rudder启动,Rudder的守护进程会检索配置信息以及正在使用的子网列表,Rudder会随机选择一个可用的子网并在etcd中注册。如果注册成功,Rudder会在接下来的24小时内使用它。如果注册失败,这证明其它的主机已经注册成功,失败的主机需要重新选取并注册。在子网地址失效之前,如果主机仍需要使用此地址,它会通过一个更新操作来延长使用期。

CoreOS已经在其内部环境中对Rudder进行了测试,尽管Rudder会带来一丁点的网络延迟,但是吞吐量基本没有影响。下面是官方在AWS m3.medium VM上使用qperf工具进行测试的测试结果:

目前Rudder只支持GCE,官方也承诺后续会支持其它的云平台。CoreOS的生态圈(Docker+CoreOS+Kubernetes+Rudder)里又加一员猛将,Hacker News上也有很多的讨论,读者可以自行阅读。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT