[TOC]
容器化網路和日誌的選型和落地
網路選型(k8s和mesos)
思考 && 痛點
-
可否跨機器訪問? 跨域訪問?
- 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可能會被用光.
- 隧道方案, 通過隧道,或者說Overlay Networking的方式:
-
網路的兩大陣營
-
Docker Libnetwork Container Network Model(CNM)陣營(Docker Libnetwork的優勢就是原生,而且和Docker容器生命週期結合緊密)
- Docker Swarm overlay
- Macvlan & IP network drivers
- Calico
- Contiv(from Cisco)
-
Container Network Interface(CNI)陣營 (CNI的優勢是相容其他容器技術(e.g. rkt)及上層編排系統(Kuberneres & Mesos))
- Kubernetes
- Weave
- Macvlan
- Flannel
- Calico
- Contiv
- Mesos CNI
-
-
常見的解決方案有:
- 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 設定為三層交換機的子網網段,容器之間通訊走二層交換,容器與外部走三層交換機的閘道器。
-
業界常用網路選型
-
kubernetes + flannel
- Flannel已經支援UDP、VxLAN、AWS VPC和GCE路由等資料轉發模式。
- kubernetes 下有 flannel、openvswitch和weave可以實現Overlay Network
- 唯品會 contiv netplugin方案(固定外網ip) + flannel
- 京東 Flannel + Neutron + OVS
-
Mesos + Calico
- Mesos支援CNI標準規範
- 一容器一ip, 網路隔離, ip分配, L3的虛擬網路
- 去哪兒 Mesos + Calico
- 七牛 Bridge+ NAT + Open vSwitch
-
contiv主要使用者可以根據例項IP直接進行訪問
-
魅族雲 OVS & VLAN + SR-IOV
-
ucloud: vswitch overlay的"大二層"網路SDN組網方案 + ipvlan
-
日誌監控選型(包括監控,統計)
docker由於分層設計模式,容器裡面無法固化資料, 容器銷燬裡面的資料就會丟失, 因此日誌需要掛載到宿主機上, 或者使用分散式儲存如ceph
-
監控可選方案
- cAdvisor + InfluxDB + Grafana
- cAdvisor + Prometheus + Grafana
- Graphite
- Zabbix
- Datadog
-
日誌可選方案
- logstash
- ELK
- Graylog
- flume
- heka
- fluentd
-
業界方案
- 阿里雲 : cAdvisor + InfuxDB + prometheus
- 協程: ELK
- 知乎: Graphite + cAdvisor