Kubernetes 和Docker Swarm 可能是使用最廣泛的工具,用于在集群環(huán)境中部署容器悲柱。但是這兩個(gè)工具還是有很大的差別。
Kubernetes
Google根據(jù)其在Linux上容器管理經(jīng)驗(yàn),改造到docker管理上刺彩,就是kubernetes。他的在許多方面表現(xiàn)良好枝恋。最重要的是構(gòu)造于Google多年的寶貴經(jīng)驗(yàn)只上创倔。
如果你從docker1.0以上開始使用kubernetes,你得到的用戶體驗(yàn)會(huì)非常良好焚碌。比如你會(huì)發(fā)現(xiàn)kubernetes解決一些docker自身的問題畦攘。例如你可以mount(綁定)持久化存儲卷(volume),以便于在遷移docker時(shí)不至于丟失數(shù)據(jù)十电。
kubernetes使用flannel
(一個(gè)使用go寫的虛擬網(wǎng)絡(luò)的開源系統(tǒng))構(gòu)造容器間的網(wǎng)絡(luò)通信知押。它還內(nèi)置有負(fù)載均衡。除此之外摆出,它的“服務(wù)發(fā)現(xiàn)”使用了etcd(一個(gè)使用golang編寫的開源虛擬網(wǎng)絡(luò)系統(tǒng))朗徊。然而,使用kubernetes是有代價(jià)的偎漫。首先爷恳,它用一個(gè)不同的命令行接口,不同的編程接口及不同的YAML文件定義等象踊。換言之温亲,你不能使用docker命令行接口也不能用docker compose來定義容器棚壁。為了使用kubernetes,所有所有的東西都需要從頭開始栈虚。這就好像這個(gè)工具并不是為了docker寫的一樣(這個(gè)在某種程度上確實(shí)是)袖外。kubernetes把集群帶到了一個(gè)全新的高度,代價(jià)是學(xué)習(xí)曲線比較陡魂务。
Docker Swarm
docker-swarm 使用了一個(gè)不同的方式曼验。它是docker原生的集群工具。