CoreOS 實戰:CoreOS 及管理工具介紹

jopen 10年前發布 | 24K 次閱讀 CoreOS

coreos_meitu_1.jpg
CoreOS是一個基于Docker的輕量級容器化Linux發行版,專為大型數據中心而設計,旨在通過 輕量的系統架構和靈活的應用程序部署能力簡化數據中心的維護成本和復雜度。 CoreOS作為Docker生態圈中的重要一員,日益得到各大云服務商的重視,目前已經完成了A輪融資,發展風頭正勁。InfoQ希望《CoreOS實 戰》系列文章能夠幫助讀者了解CoreOS以及相關的使用方法。如果說Docker是下一代的虛擬機,那CoreOS就應該是下一代的服務器 Linux,InfoQ愿和您一起探索這個新生事物。另外,歡迎加入InfoQ Docker技術交流群,QQ群號:365601355。

1. 概述

隨著 Docker 的走紅,CoreOS 作為一個基于 Docker 的輕量級容器化 Linux 發行版日益得到大家的重視,目前所有的主流云服務商都提供了對 CoreOS 的支持。CoreOS 是新時代下的Linux 發行版,它有哪些獨特的魅力了?本篇作為《CoreOS實戰》的第一部分,將向大家簡要介紹 CoreOS 以及CoreOS 相關的管理工具,試圖向您揭開CoreOS背后神秘的面紗。

2. CoreOS之禪

云計算新星 Docker 正在以火箭般的速度發展,與它相關的生態圈也漸入佳境,CoreOS 就是其中之一。CoreOS 是一個全新的、面向數據中心設計的 Linux 操作系統,在2014年7月發布了首個穩定版本,目前已經完成了800萬美元的A輪融資。 CoreOS 專門針對大型數據中心而設計,旨在以輕量的系統架構和靈活的應用程序部署能力簡化數據中心的維護成本和復雜度。現在CoreOS 已經推出了付費產品。通過付費,用戶可以使用可視化工具管理自己的 CoreOS 集群。

與其他歷史悠久、使用廣泛的 Linux 操作系統相比,CoreOS 擁有下面幾個優點。

 CoreOS 實戰:CoreOS 及管理工具介紹

首先,CoreOS 沒有提供包管理工具,而是通過容器化 (containerized) 的運算環境向應用程序提供運算資源。應用程序之間共享系統內核和資源,但是彼此之間又互不可見。這樣就意味著應用程序將不會再被直接安裝到操作系統中,而 是通過 Docker 運行在容器中。這種方式使得操作系統、應用程序及運行環境之間的耦合度大大降低。相對于傳統的部署方式而言,在 CoreOS 集群中部署應用程序更加靈活便捷,應用程序運行環境之間的干擾更少,而且操作系統自身的維護也更加容易。

其次, CoreOS 采用雙系統分區 (dual root partition) 設計。兩個分區分別被設置成主動模式和被動模式并在系統運行期間各司其職。主動分區負責系統運行,被動分區負責系統升級。一旦新版本的操作系統被發布,一 個完整的系統文件將被下載至被動分區,并在系統下一次重啟時從新版本分區啟動,原來的被動分區將切換為主動分區,而之前的主動分區則被切換為被動分區,兩 個分區扮演的角色將相互對調。同時在系統運行期間系統分區被設置成只讀狀態,這樣也確保了 CoreOS 的安全性。CoreOS 的升級過程在默認條件下將自動完成,并且通過 cgroup 對升級過程中使用到的網絡和磁盤資源進行限制,將系統升級所帶來的影響降至最低。

另外,CoreOS 使用 Systemd 取代 SysV 作為系統和服務的管理工具。與 SysV 相比,Systemd 不但可以更好的追蹤系統進程,而且也具備優秀的并行化處理能力,加之按需啟動等特點,并結合 Docker 的快速啟動能力,在 CoreOS 集群中大規模部署 Docker Containers 與使用其他操作系統相比在性能上的優勢將更加明顯。Systemd 的另一個特點是引入了 “target” 的概念,每個 target 應用于一個特定的服務,并且可以通過繼承一個已有的 target 擴展額外的功能,這樣使得操作系統對系統上運行的服務擁有更好的控制力。

通過對系統結構的重新設計,CoreOS 剔除了任何不必要的軟件和服務。在一定程度上減輕了維護一個服務器集群的復雜度,幫助用戶從繁瑣的系統及軟件維護工作中解脫出來。雖然CoreOS 最初源自于Google ChromeOS,但是從一開始就決定了 CoreOS 更加適合應用于一個集群環境而不是一個傳統的服務器操作系統。

3. CoreOS相關工具

除了操作系統之外,CoreOS 團隊和其他團隊還提供了若干工具幫助用戶管理 CoreOS 集群以及部署 Docker containers。

3.1. etcd

 CoreOS 實戰:CoreOS 及管理工具介紹

在CoreOS 集群中處于骨架地位的是 etcd。 etcd 是一個分布式 key/value 存儲服務,CoreOS 集群中的程序和服務可以通過 etcd 共享信息或做服務發現 。etcd 基于非常著名的 raft 一致性算法:通過選舉形式在服務器之中選舉 Lead 來同步數據,并以此確保集群之內信息始終一致和可用。etcd 以默認的形式安裝于每個 CoreOS 系統之中。在默認的配置下,etcd 使用系統中的兩個端口:4001和7001,其中4001提供給外部應用程序以HTTP+Json的形式讀寫數據,而7001則用作在每個 etcd 之間進行數據同步。用戶更可以通過配置 CA Cert讓 etcd 以 HTTPS 的方式讀寫及同步數據,進一步確保數據信息的安全性。

3.2. fleet

fleet 是一個通過 Systemd對CoreOS 集群中進行控制和管理的工具。fleet 與 Systemd 之間通過 D-Bus API 進行交互,每個 fleet agent 之間通過 etcd 服務來注冊和同步數據。fleet 提供的功能非常豐富,包括查看集群中服務器的狀態、啟動或終止 Docker container、讀取日志內容等。更為重要的是 fleet 可以確保集群中的服務一直處于可用狀態。當出現某個通過 fleet 創建的服務在集群中不可用時,如由于某臺主機因為硬件或網絡故障從集群中脫離時,原本運行在這臺服務器中的一系列服務將通過fleet 被重新分配到其他可用服務器中。雖然當前 fleet 還處于非常早期的狀態,但是其管理 CoreOS 集群的能力是非常有效的,并且仍然有很大的擴展空間,目前已提供簡單的 API 接口供用戶集成。

3.3. Kubernetes

Kuberenetes 是由 Google 開源的一個適用于集群的 Docker containers 管理工具。用戶可以將一組 containers 以 “POD” 形式通過 Kubernetes 部署到集群之中。與 fleet 更加側重 CoreOS 集群的管理不同,Kubernetes 生來就是一個 Containers 的管理工具。Kubernetes 以 “POD” 為單位管理一系列彼此聯系的 Containers,這些 Containers 被部署在同一臺物理主機中、擁有同樣地網絡地址并共享存儲配額。

3.4. flannel (rudder)

flannel (rudder) 是 CoreOS 團隊針對 Kubernetes 設計的一個覆蓋網絡 (overlay network) 工具,其目的在于幫助每一個使用 Kuberentes 的 CoreOS 主機擁有一個完整的子網。Kubernetes 會為每一個 POD 分配一個獨立的 IP 地址,這樣便于同一個 POD 中的 Containers 彼此連接,而之前的 CoreOS 并不具備這種能力。為了解決這一問題,flannel 通過在集群中創建一個覆蓋網格網絡 (overlay mesh network) 為主機設定一個子網。

4. 下篇介紹

在下一篇中,筆者將為大家展示如何建立一個 CoreOS 集群并通過 Kubernetes 管理其中的 Docker Containers。

來自:http://www.infoq.com/cn/articles/what-is-coreos

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!