[TOC]linux
容器化网络和日志的选型和落地
网络选型(k8s和mesos)
思考 && 痛点
-
能否跨机器访问? 跨域访问?docker
- flannel能够跨容器通讯
- 跨主机的容器互联
- 容器与外部互联
-
是否支持静态ip , 固定ip ? 域名访问?设计模式
- 固定ip的话,那么就须要每次部署或者更新或重启的时候,ip保持不变
- overlay network, Docker 1.6 能够实现跨主机通讯
-
是否支持dns?跨域
-
4层/7层访问网络
-
容器库容后的网络分布式
-
ip端口,最好不要自行手动规划工具
-
网络策略,防护 ,隔离 ?性能
方案
-
方案类别阿里云
- 隧道方案, 经过隧道,或者说Overlay Networking的方式:
- Weave,UDP广播,本机创建新的BR,经过PCAP互通。
- Open vSwitch(OVS),基于VxLAN和GRE协议,可是性能方面损失比较严重。
- Flannel,UDP广播,VxLan。
- 路由方案
- Calico,基于BGP协议的路由方案,支持很细致的ACL控制,对混合云亲和度比较高。
- Macvlan,从逻辑和Kernel层来看隔离性和性能最优的方案,基于二层隔离,因此须要二层路由器支持,大多数云服务商不支持,因此混合云上比较难以实现。
- 性能好,没有NAT,效率比较高, 可是受限于路由表,另外每一个容器都有一个ip,那么业务ip可能会被用光.
-
网络的两大阵营设计
-
常见的解决方案有:
- 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 设置为三层交换机的子网网段,容器之间通讯走二层交换,容器与外部走三层交换机的网关。
-
业界经常使用网络选型
日志监控选型(包括监控,统计)
docker因为分层设计模式,容器里面没法固化数据, 容器销毁里面的数据就会丢失, 所以日志须要挂载到宿主机上, 或者使用分布式存储如ceph
-
监控可选方案
- cAdvisor + InfluxDB + Grafana
- cAdvisor + Prometheus + Grafana
- Graphite
- Zabbix
- Datadog
-
日志可选方案
- logstash
- ELK
- Graylog
- flume
- heka
- fluentd
-
业界方案
- 阿里云 : cAdvisor + InfuxDB + prometheus
- 协程: ELK
- 知乎: Graphite + cAdvisor