導讀
一旦公司越過了「讓我們看看這些容器如何工作」的階段,他們最終會在許多不同的地方執行容器。需要快速、高效地交付程式的公司 —— 而今天,哪些公司不需要這樣做?—— 是那些正在轉向 linux 容器的公司。他們還發現,一旦公司越過了「讓我們看看這些容器如何工作」的階段,他們最終會在許多不同的地方執行容器。
linux 容器技術不是新技術,但它隨著最初由 docker 發明的創新性打包格式(現在的 oci 格式)以及新應用對持續開發和部署的需求開始變得流行。在 red hat 的 2016 年 5 月的 forrester 研究中,有 48% 的受訪者表示已經在開發中使用容器,今年的數字預計將達到 53%。只有五分之一的受訪者表示,他們在 2017 年不會在開發過程中利用容器。
像樂高積木一樣,容器映象可以輕鬆地重用**和服務。每個容器映象就像乙個單獨的、旨在做好一部分工作的樂高積木。它可能是資料庫、資料儲存、甚至預訂服務或分析服務。通過單獨包裝每個元件,從而可以在不同的應用中使用。但是,如果沒有某種程式定義(即指令手冊instruction booklet),則難以在不同環境中建立完整應用程式的副本。那就是容器編排的來由。
容器編排提供了像樂高系統這樣的基礎設施 —— 開發人員可以提供如何構建應用程式的簡單說明。編排引擎將知道如何執行它。這使得可以輕鬆建立同一應用程式的多個副本,跨越開發人員電腦、ci/cd 系統,甚至生產資料中心和雲提供商環境。
linux 容器映象允許公司在整個執行時環境(作業系統部件)中打包和隔離應用程式的構建塊。在此基礎上,通過容器編排,可以很容易地定義並執行所有的塊,並一起構成完整的應用程式。一旦定義了完整的應用程式,它們就可以在不同的環境(開發、測試、生產等)之間移動,而不會破壞它們,且不改變它們的行為。
仔細調查容器很明顯,容器是有意義的,越來越多的公司像「對輪胎踹兩腳」一樣去研究容器。一開始,可能是乙個開發人員使用乙個容器工作,或是一組開發人員在使用多個容器。在後一種情況下,開發人員可能會隨手編寫一些**來處理在容器部署超出單個例項之後快速出現的複雜性。
這一切都很好,畢竟他們是開發人員 —— 他們已經做到了。但即使在開發人員世界也會變得混亂,而且隨手**模式也沒法跟著容器進入 qa 和生產環境下。
編排工具基本上做了兩件事。首先,它們幫助開發人員定義他們的應用程式的表現 —— 一組用來構建應用程式例項的服務 —— 資料庫、資料儲存、web 服務等。編排器幫助標準化應用程式的所有部分,在一起執行並彼此通訊,我將這稱之為標準化程式定義。其次,它們管理乙個計算資源集群中啟動、停止、公升級和執行多個容器的過程,這在執行任何給定應用程式的多個副本時特別有用,例如持續整合 (ci) 和連續交付 (cd)。
想像乙個公寓樓。居住在那裡的每個人都有相同的街道位址,但每個人都有乙個數字或字母或兩者的組合,專門用來識別他或她。這是必要的,就像將正確的郵件和包裹交付給合適的租戶一樣。
同樣,在容器中,只要你有兩個容器或兩個要執行這些容器的主機,你必須跟蹤開發人員測試資料庫連線或使用者連線到正在執行的服務的位置。容器編排工具實質上有助於管理跨多個主機的容器的後勤。它們將生命週期管理功能擴充套件到由多個容器組成的完整應用程式,部署在一組機器上,從而允許使用者將整個集群視為單個部署目標。
這真的很簡單,又很複雜。編排工具提供了許多功能,從配置容器到識別和重新排程故障容器??,將容器暴露給集群外的系統和服務,根據需要新增和刪除容器等等。
雖然容器技術已經存在了一段時間,但容器編排工具只出現了幾年。編排工具是 google 從內部的高效能計算(hpc)和應用程式管理中吸取的經驗教訓開發的。在本質上,其要解決的就是在一堆伺服器上執行一堆東西(批處理作業、服務等)。從那時起,編排工具已經進化到可以使公司能夠戰略性地利用容器。
一旦你的公司確定需要容器編排,下一步就是確定哪個平台對於業務是最有意義的。在評估容器編排時,請仔細檢視(尤其):
應用程式定義語言
現有能力集
新增新功能的速度
開源還是專有
社群健康度(成員的積極性/高效,成員提交的質量/數量,貢獻者的個人和公司的多樣性)
強化努力
參考架構
認證產品化過程
有三個主要的容器編排平台,它們似乎領先於其他,每個都有自己的歷史。
docker swarm: swarm 是容器典範 docker 的附件。swarm 允許使用者建立並管理 docker 節點的集群為單個虛擬系統。swarm 似乎正在成為乙個單一**商的專案。
mesos: mesos 是從 apache 和高效能計算中成長起來的,因此是乙個優秀的排程員。mesos 的技術也非常先進,雖然與其他相比似乎沒有發展速度或投資優勢。
kubernetes: 由 google 開發,由其內部編排工具 borg 經驗而來,kubernetes 被廣泛使用,並擁有強大的社群。其實這是 github 上排名第一的專案。mesos 目前可能比 kubernetes 略有技術優勢,但是 kubernetes 是乙個快速發展的專案,這也是為了長期技術上的收益而進行的架構投資。在不久的將來,在技術能力上應該能趕超 mesos。
編排的未來展望未來,企業們可以期待看到編排工具在應用程式和服務為中心的方向上發展。因為在現實中,如今快速應用程式開發實際上是在快速地利用服務、**和資料的組合。無論這些服務是開源的,還是由內部團隊部署的抑或從雲提供商處購買的,未來將會是兩者的混合。由於今天的編排器也在處理應用程式定義方面的挑戰,所以期望看到它們越來越多地應對外部服務的整合。
此時此刻,想要充分利用容器的公司必須利用容器編排。
linux中的管理優化工具
nmon nmon 工具可以幫助在乙個螢幕上顯示所有重要的效能優化資訊,並動態地對其進行更新。這個高效的工具可以工作於任何啞螢幕 telnet 會話 甚至撥號線路。另外,它並不會消耗大量的 cpu 週期,通常低於百分之二。在更新的計算機上,其 cpu 使用率將低於百分之一。htop 乙個可以讓使用者...
canonical標籤在SEO優化中的作用詳解
我們都知道靜態鏈結是有利於seo的,但事實上並不是所有 都能很好的進行seo操作,因為 程式的不同,生成的url也是不同,而url還分動態url和靜態url,有的程式是直接生成靜態html頁面,而有的是動態程式進行偽靜態後的html鏈結,而進行了偽靜態處理後勢必會造成乙個頁面有多個url可以訪問的情...
Linux 效能監控 測試 優化工具
linux 平台上的效能工具有很多,眼花繚亂,長期的摸索和經驗發現最好用的還是那些久經考驗的 簡單的小工具。系統效能專家 brendan d.gregg 在最近的 linuxcon na 2014 大會上更新了他那個有名的關於 linux 效能方面的 talk linux performance t...