为了账号安全,请及时绑定邮箱和手机立即绑定

Docker容器化网络和日志的选型和落地

标签:
Docker

[TOC]

Docker容器化网络和日志的选型和落地

网络选型(k8s和mesos)

思考 &&  痛点

  1. 可否跨机器访问? 跨域访问?

  • flannel可以跨容器通信

  • 跨主机的容器互联

  • 容器与外部互联

是否支持静态ip , 固定ip ?  域名访问?

  • 固定ip的话,那么就需要每次部署或者更新或重启的时候,ip保持不变

  • overlay network, Docker 1.6 可以实现跨主机通信

是否支持dns?

4层/7层访问

容器库容后的网络

ip端口,最好不要自行手动规划

网络策略,防御 ,隔离 ?

  • 容器集群不同应用之间的网络隔离和流量限制

方案

  1. 方案类别

  • Calico,基于BGP协议的路由方案,支持很细致的ACL控制,对混合云亲和度比较高。

  • Macvlan,从逻辑和Kernel层来看隔离性和性能最优的方案,基于二层隔离,所以需要二层路由器支持,大多数云服务商不支持,所以混合云上比较难以实现。

  • 性能好,没有NAT,效率比较高, 但是受限于路由表,另外每个容器都有一个ip,那么业务ip可能会被用光.

  • Weave,UDP广播,本机建立新的BR,通过PCAP互通。

  • Open vSwitch(OVS),基于VxLAN和GRE协议,但是性能方面损失比较严重。

  • Flannel,UDP广播,VxLan。

  • 隧道方案, 通过隧道,或者说Overlay Networking的方式:

  • 路由方案

网络的两大阵营

  • Kubernetes

  • Weave

  • Macvlan

  • Flannel

  • Calico

  • Contiv

  • Mesos CNI

  • Docker Swarm overlay

  • Macvlan & IP network drivers

  • Calico

  • Contiv(from Cisco)

  • Docker Libnetwork Container Network Model(CNM)阵营(Docker Libnetwork的优势就是原生,而且和Docker容器生命周期结合紧密)

  • Container Network Interface(CNI)阵营 (CNI的优势是兼容其他容器技术(e.g. rkt)及上层编排系统(Kuberneres & Mesos))

  1. 常见的解决方案有:

  • flannel vxlan,overlay方式

  • calico,三层隔离,跨子网部署时,如果网关不支持BGP,则需要走ipip tunnel的overlay方式

  • ipvlan macvlan,物理二层/三层隔离,目前需要pipework工具在单个节点上配置,仅做了vlan隔离,不解决arp广播

  • swarm native vxlan,跟flannel vxlan类似

  • neutron sdn,选择就多种了,ml2+ovsplugin,midonet,vlan or vxlan

  • contiv,思科主导,sdn解决方案,可以用纯软的ovs,也可以用ovs+cisco硬件sdn controller

  • linux bridge+三层交换机:host上 linux bridge 设置为三层交换机的子网网段,容器之间通信走二层交换,容器与外部走三层交换机的网关。

业界常用网络选型

  • Mesos支持CNI标准规范

  • 一容器一ip, 网络隔离, ip分配, L3的虚拟网络

  • 去哪儿 Mesos + Calico

  • 七牛 Bridge+ NAT + Open vSwitch

  • Flannel已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发模式。

  • kubernetes 下有 flannel、openvswitch和weave可以实现Overlay Network

  • 唯品会 contiv netplugin方案(固定外网ip)  +  flannel

  • 京东 Flannel + Neutron + OVS

  • kubernetes + flannel

  • Mesos + Calico

  • contiv主要用户可以根据实例IP直接进行访问

  • 魅族云 OVS & VLAN + SR-IOV

  • ucloud: vswitch overlay的"大二层"网络SDN组网方案 + ipvlan

日志监控选型(包括监控,统计)

docker由于分层设计模式,容器里面无法固化数据, 容器销毁里面的数据就会丢失, 因此日志需要挂载到宿主机上, 或者使用分布式存储如ceph

  1. 监控可选方案

  • cAdvisor + InfluxDB + Grafana

  • cAdvisor + Prometheus + Grafana

  • Graphite

  • Zabbix

  • Datadog

日志可选方案

  • logstash

  • ELK

  • Graylog

  • flume

  • heka

  • fluentd

业界方案

  • 阿里云 : cAdvisor + InfuxDB + prometheus

  • 协程:  ELK

  • 知乎:  Graphite + cAdvisor



作者:吴德宝AllenWu
链接:https://www.jianshu.com/p/cb249fcd4042


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消