從容器到K8S

容器技術

容器是一種輕量級操作系統層面的虛擬機,它爲應用軟件及其依賴組件提供了一個資源獨立的運行環境。應用軟件所依賴的組件會被打包成一個可重用的鏡像,鏡像運行環境並不會與主操作系統共享內存、CPU和硬盤空間,由此也保證了容器內部的進程與容器外部進程的獨立關係。

容器和虛擬機

虛擬機,類似於“子電腦”
在“子電腦”裏,你可以和正常電腦一樣運行程序,例如開QQ。如果你願意,你可以變出好幾個“子電腦”,裏面都開上QQ。“子電腦”和“子電腦”之間,是相互隔離的,互不影響。
虛擬機屬於虛擬化技術。容器技術,也是虛擬化技術,屬於輕量級的虛擬化。
虛擬機雖然可以隔離出很多“子電腦”,但佔用空間更大,啓動更慢,虛擬機軟件可能還要花錢(例如VMWare)。
而容器技術恰好沒有這些缺點。它不需要虛擬出整個操作系統,只需要虛擬一個小規模的環境(類似“沙箱”)。
它啓動時間很快,幾秒鐘就能完成。而且,它對資源的利用率很高(一臺主機可以同時運行幾千個Docker容器)。此外,它佔的空間很小,虛擬機一般要幾GB到幾十GB的空間,而容器只需要MB級甚至KB級。
在圖片這裏插入圖片描述

Docker

當前,docker幾乎是容器的代名詞,它是容器技術的一種。
但是需要注意,Docker本身並不是容器,它是創建容器的工具,是應用容器引擎。
它有兩句口號:第一句,是“Build, Ship and Run”。
也就是,“搭建、發送、運行”,三板斧。
Docker的第二句口號就是:“Build once,Run anywhere(搭建一次,到處能用)”。
Docker技術有三大核心概念:
鏡像(Image)
容器(Container)
倉庫(Repository)
Docker鏡像,是一個特殊的文件系統。它除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(例如環境變量)。鏡像不包含任何動態數據,其內容在構建之後也不會被改變。
就在Docker容器技術被炒得熱火朝天之時,大家發現,如果想要將Docker應用於具體的業務實現,是存在困難的——編排、管理和調度等各個方面,都不容易。於是,人們迫切需要一套管理系統,對Docker及容器進行更高級更靈活的管理。於是K8S應運而生。

K8S集羣

K8S,就是基於容器的集羣管理平臺,它的全稱,是kubernetes。
Kubernetes這個單詞來自於希臘語,含義是舵手或領航員。K8S是它的縮寫,用“8”字替代了“ubernete”這8個字符。
K8S的創造者,是衆人皆知的行業巨頭——Google。
一個K8S系統,通常稱爲一個K8S集羣(Cluster)。
這個集羣主要包括兩個部分:
一個Master節點(主節點)
一羣Node節點(計算節點)
在這裏插入圖片描述
一看就明白:Master節點主要還是負責管理和控制。Node節點是工作負載節點,裏面是具體的容器。
深入來看這兩種節點。

首先是Master節點:
在這裏插入圖片描述
Master節點包括API Server、Scheduler、Controller manager、etcd。
API Server是整個系統的對外接口,供客戶端和其它組件調用,相當於“營業廳”。
Scheduler負責對集羣內部的資源進行調度,相當於“調度室”。
Controller manager負責管理控制器,相當於“大總管”。

然後是Node節點:
在這裏插入圖片描述
Node節點包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可選),還有就是Pod。
Pod是Kubernetes最基本的操作單元。一個Pod代表着集羣中運行的一個進程,它內部封裝了一個或多個緊密相關的容器。除了Pod之外,K8S還有一個Service的概念,一個Service可以看作一組提供相同服務的Pod的對外訪問接口。
Kubelet,主要負責監視指派到它所在Node上的Pod,包括創建、修改、監控、刪除等。
Kube-proxy,主要負責爲Pod對象提供代理。
Fluentd,主要負責日誌收集、存儲與查詢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章