kubernetes基本概念

基本架構

clipboard.png

彩色版node

clipboard.png

基本概念

Master

master節點運行着集羣管理相關的一組進程:docker

  • etcdshell

  • kube-apiserverapi

  • kube-controller-manager安全

  • scheduler網絡

這些進程實現了整個集羣的資源管理、Pod調度、彈性伸縮、安全控制、系統監控、糾錯等管理功能。架構

Node(節點)

  • 以前的版本叫作Minion,能夠是一臺物理主機,也能夠是一臺虛擬機。負載均衡

  • 每一個Node上運行用於啓動和管理Pod的服務Kubeletsocket

  • 運行Kubelet、kube-proxy、docker daemon等服務進程spa

相關命令

  • kubectl get node

NAME           LABELS                                STATUS     AGE
xxx   kubernetes.io/hostname=xxxx   Ready      3h
127.0.0.1      kubernetes.io/hostname=127.0.0.1      NotReady   3h
  • kubectl describe node xxx

Pod(最小調度單元、服務隔離)

  • 一個Pod能夠被一個容器化的環境看作是應用層的邏輯宿主機(Logical Host),一般一個Node中能夠運行幾百個Pod,每一個Pod中有多個容器應用,同一個Pod中的多個容器應用一般是緊密耦合的(至關於多個業務容器組成的一個邏輯虛擬機)。

  • 每一個Pod中有一個特殊的Pause容器,其餘的成爲業務容器,這些業務容器共享Pause容器的網絡棧以及Volume掛載卷,於是他們之間的通訊及數據交互更爲高效。

同一個pod中的業務容器共享以下資源:

  • PID命名空間(不一樣應用程序能夠看到其餘應用程序的PID)

  • 網絡命名空間(pod中多個容器能夠訪問同一個IP和端口範圍)

  • IPC命名空間(可以使用SystemV IPC或者POSIX消息隊列進行通訊)

  • UTS命名空間(共享同一個主機名)

  • Volumes(訪問定義在pod級別的存儲卷)

Replication Controller(管理一組Pod)

kubernetes經過RC中定義的Label篩選出對應的Pod實例並實時監控其狀態和數量,若是實例數量少於定義的副本數量,則會根據RC中定義的Pod模板來建立一個新的Pod,而後Scheduler將此Pod調度到合適的Node上啓動運行,直到Pod實例數量達到預約目標。這個過程徹底是自動化的。

  • 確保用戶指望的Pod數量(建立或銷燬Pod)

  • 在線Pod數量調整

Service(一組提供相同服務的pod的對外訪問接口)

具備以下特徵:

  • 擁有一個惟一指定的名字

  • 擁有一個虛擬IP和端口號

  • 可以提供某種遠程服務能力

  • 被映射到提供這種服務能力的一組容器上

service的服務進程目前都基於socket通訊方式對外提供服務。

clipboard.png

kubernetes內置了透明的負載均衡以及故障恢復的機制。

Label(標籤)

解決service與pod之間的關聯問題。kubernetes給每一個pod貼上一個標籤,而後給service定義定義標籤選擇器。

Scheduler(將Pod調度到Node上)

將Pod調度到合適的Node上啓動運行

Volume(容器共享存儲卷)

pod中可以被多個容器訪問的共享目錄,與pod同生命週期,但與容器的生命週期無關,當容器終止或重啓時,volume中的數據不會丟失。

Namespace(命名空間)

使用namespace來組織kubernetes的各類對象,能夠實現用戶的分組(多租戶),對不一樣的租戶還能夠進行單獨的資源設置和管理,是的整個集羣的資源配置很是靈活。

參考

相關文章
相關標籤/搜索