Swarm的優點:
swarm API兼容docker API,使得swarm 學習成本低,同時架構簡單,部署運維成本較低。
Swarm的劣勢:
一樣是由於API兼容,沒法提供集羣的更加精細的管理。
在網絡方面,默認docker容器是經過橋接與NAT和主機外網絡通訊,這樣就出現2個問題,一個是由於是NAT,外部主機沒法主動訪問到容器內(除了端口映射),另外默認橋接IP是同樣的,這樣會出現不一樣主機的容器有相同的IP的狀況。這樣兩容器更加不能通訊。同時網絡性能方面,有人測試通過橋接的網絡性能只有主機網絡性能的70%。固然以上問題能夠經過其餘工具解決,好比用 Flannel 或者 OVS網橋。
在容器可靠性方面,相較於K8s的Replication Controllers能夠監控並維持容器的生命,swarm在啓動時刻能夠控制容器啓動,在啓動後,若是容器或者容器主機崩潰,swarm沒有機制來保證容器的運行。docker
在網絡方面,k8s 默認使用Flannel做爲overlay網絡。
Flannel是CoreOS 團隊針對 Kubernetes 設計的一個覆蓋網絡(OverlayNetwork)工具,其目的在於幫助每個使用 Kuberentes 的CoreOS 主機擁有一個完整的子網。
簡單來講,它的功能是讓集羣中的不一樣節點主機建立的Docker容器都具備全集羣惟一的虛擬IP地址。網絡
K8s 的優點:
容器的高可用性,集羣的精細管理,複雜的網絡場景。
K8s 的劣勢:
K8s的學習曲線陡峭,同時運維的成本相對高點。架構