容器技術提供了元件化的環境,可以幫助業務應用在雲之間輕鬆遷移而無需顯著的返工。隨著容器在企業持續獲得發展,廠商將增加新的功能讓使用者可以建立可擴充套件的基於容器的環境。然而,大範圍控制容器部署也會有一些併發症。容器肯定是跟資源相匹配的。這些挑戰會導致集群管理和編排的併發需求。
集群管理工具是乙個通過圖形介面或者通過命令列來幫助你管理一組集群的軟體程式。有了這個工具,你就可以監控集群裡的節點,配置services,管理整個集群伺服器。集群管理可以從像傳送工作到集群的低投入活動,到像負載均衡和可得性的高介入工作。
當前主流的容器集群管理技術,包括了 docker 官方的 docker swarm、twitter 背書的 mesos 和 google 背書的 kubernetes。
這些可選的編排工具有一些共同的特徵,如容器配置、發布和發現、系統監控和故障恢復、宣告式系統配置以及有關容器布置和效能的規則和約束定義機制。除此之外,有些工具還提供了處理特定需求的特性。
其中,由於apache mesos 只是乙個分布式核心,目前的發展方向是資料中心作業系統,它同時支援 marathon、kubernetes 和 swarm 等多種框架,連 mesosphere 也是 kubernetes 生態的一員,從編排的角度,討論 mesos 意義不大,故而只對比 docker swarm 和 kubernetes。
來自docker的原生解決方案
docker swarm的優點之一在於,它是一種原生解決方案――你可以使用docker命令,實施docker網路、外掛程式和卷。swarm管理器建立幾個主節點,並為領導選舉建立特定規則。萬一首要的主節點出現故障,就可以實施這些管理機制。swarm排程器擁有諸多過濾器,包括親和標籤和節點標籤。過濾器可以將容器與底層節點聯絡起來,提高資源利用率、提公升效能。
swarm對使用者來說,之前使用docker的經驗可以繼承過來。非常容易上手,學習成本和二次開發成本都比較低。同時swarm本身專注於docker集群管理,非常輕量,占用資源也非常少。簡單說,就是外掛程式化機制,swarm中的各個模組都抽象出了api,可以根據自己一些特點進行定製實現。
與所有的開源專案一樣,swarm專案也成立了自己的社群,參與社群的方法基本上和其他社群一致。當遇到問題時,可以在社群建立issue,然後描述問題,最好能上環境資訊以及問題重現的步驟,這樣有利於問題的定位。當然也可也直接通過irc或者郵件直接交流。
經驗老道的kubernetes
另外乙個非常重要的編排技術就是kubernetes,前身是borg,是google 內部使用的集群管理工具,迄今已在 google 生產環境中執行15年,說久經考驗並不過分。
kubernetes的開發者致力於保持它一直處於可訪問、輕量級狀態,並且易於使用。它可以在很多雲環境中使用,包括私有雲,公有雲,多雲端和混合雲。kubernetes可以在fly上進行自我修復,它以自動複製,自動再啟動,自動定位為特色。它可以被不斷擴充套件,它的特點是hookable,可插拔和模組化。
kubernetes對計算資源進行了更高層次的抽象,通過將容器進行細緻的組合,將最終的應用服務交給使用者。kubernetes在模型建立之初就考慮了容器跨機連線的要求,支援多種網路解決方案,同時在service層次構建集群範圍的sdn網路。其目的是將服務發現和負載均衡放置到容器可達的範圍,這種透明的方式便利了各個服務間的通訊,並為微服務架構的實踐提供了平台基礎。而在pod層次上,作為kubernetes可操作的最小物件,其特徵更是對微服務架構的原生支援。
可以說,基於 borg 成熟的經驗打造的 kubernetes,為容器編排管理提供了完整的開源方案,並且社群活躍,生態完善,積累了大量分布式、服務化系統架構的最佳實踐,從目前的支援率上看,kubernetes也是遙遙領先。
容器集群部署 選好編排工具是關鍵
集群管理工具是乙個通過圖形介面或者通過命令列來幫助你管理一組集群的軟體程式。有了這個工具,你就可以監控集群裡的節點,配置services,管理整個集群伺服器。集群管理可以從像傳送工作到集群的低投入活動,到像負載均衡和可得性的高介入工作。當前主流的容器集群管理技術,包括了 docker 官方的 doc...
容器編排工具k8s
如何實踐 1 搜尋kubunetes online kubernetes playground katacoda pod k8s最小排程單位 docker pause 二個容器 deployments 維持pod一定數量 service 解決deploytemnets內部之間的乙個負載均衡 dns解...
Docker 容器部署 Consul 集群
consul 提供了分布式系統的服務發現和配置的解決方案。基於go語言實現。並且在git上開放了原始碼。consul還包括了分布式一致協議的實現,健康檢查和管理ui。docker 的簡單介紹,可以參考前面一篇文章。配合docker來做應用容器,用consul 來做集群的服務發現和健康檢查,並且還可以...