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