Linux雲端計算虛擬化-Kubernetes 容器叢集管理系統基礎概念講述

熊博主發表於2020-12-20

Linux雲端計算虛擬化-Kubernetes 容器叢集管理系統基礎概念講述

1. kubernetes簡介

Kubernetes 是Google開源的容器叢集管理系統,基於 Docker 構建一個容器的排程服務,提供資源排程、均衡容災、服務註冊、動態擴縮容等功能套件。

Kubernetes 是基於docker容器的雲平臺,簡寫為:k8s
OpenStack 是基於kvm虛擬機器雲平臺。

k8s官網https://kubernetes.io/

在這裡插入圖片描述

2. k8s常見元件介紹

①Master:提供k8s叢集的管理控制中心,可以在叢集中任何節點上執行。通常在一臺VM/機器上啟動所有Master元件,並且不會在此VM/機器上執行使用者容器。

②Api Server:提供介面服務,使用者通過apiserver來管理整個容器叢集平臺。API Server負責和etcd互動(其他元件不會直接操作etcd,只有API Server這麼做),整個kubernetes 叢集的所有的互動都是以API Server為核心的。

  • 任何的資源請求/呼叫操作都是通過apiserver提供的介面進行。
  • 所有模組之間並不會互相呼叫,而是通過和API Server互動完成自己的那部分工作。
  • API Server 提供的驗證和授權保證了整個叢集的安全。

③Scheduler:k8s的排程服務,監視新建立沒有分配到Node的Pod,為Pod選擇一個Node。

④Replication Controllers:Kubernetes 系統中最有用的功能,實現複製多個 Pod 副本,往往一個應用需要多個 Pod 來支撐,並且可以保證其複製的副本數,即使副本所排程分配的宿主機出現異常,通過 Replication Controller 可以保證在其它宿主機啟用同等數量的 Pod。Replication Controller 可以通過 repcon 模板來建立多個 Pod 副本,同樣也可以直接複製已存在 Pod,需要通過 Label selector 來關聯。

⑤minion:真正用來執行容器container的物理機,在k8s中需要多個minion機器來提供運算。

⑥container:容器,用來執行服務和程式。【豌豆】

⑦pod:在k8s系統中,排程的最小顆粒不是容器,而是一個pod,pod是一個可以被建立、銷燬、排程、管理的最小的部署單元,pod可以包括一個或一組容器。【一群鯨魚(docker容器)或豌豆莢】

⑧kube_proxy:埠轉發,相當於lvs-nat模式中的負載排程器。proxy解決了同一宿主機,相同服務埠衝突的問題,提供了對外服務的能力,proxy的後端使用了隨機、輪詢負載均衡演算法。實現 Kubernetes 網路相關內容。

⑨etcd:是kubernetes提供的預設儲存系統。儲存 kubernetes 叢集的所有資料, 可以理解為是 k8s 的資料庫,儲存著 k8s 容器雲平臺中所有節點、pods、網路等資訊。使用時需要為etcd資料提供備份計劃。

⑩controller manager:控制器管理器,是叢集中處理常規任務的後臺執行緒。邏輯上,每個控制器是一個單獨的程式,但為了降低複雜性,它們都被編譯成單個二進位制檔案,並在單個程式中執行。

  • 節點(Node)控制器
  • 副本(Replication)控制器:負責維護系統中每個副本中的pod。
  • 端點(Endpoints)控制器:填充Endpoints物件(即連線Services和Pods)。
  • Service Account和Token控制器:為新的Namespace建立預設賬戶訪問API Token

其他概念:
①service:Services 是 Kubernetes 最外圍的單元,通過虛擬一個訪問 IP 及服務埠,可以訪問我們定義好的 Pod 資源,目前的版本是通過 iptables 的 nat 轉發來實現,轉發的目標埠為Kube_proxy 生成的隨機埠。

②lables:用於區分 Pod、Service、Replication Controller 的 key/value 鍵值對,僅使用在Pod、Service、 Replication Controller 之間的關係識別,但對這些單元本身進行操作時得使用 name標籤。

③deployment:用於更新 Pod 和 Replica Set(下一代的 Replication Controller)。可以在 Deployment 物件中只描述你所期望的理想狀態(預期的執行狀態),Deployment 控
制器會將現在的實際狀態轉換成期望的狀態。

④kubelet命令:管理 Pod、Pod 中容器及容器的映象和卷等資訊。
Kubelet 和 Kube-proxy 都執行在 minion 節點上。

⑤cloud-controller-manager:雲控制器管理器,負責與底層雲提供商的平臺互動。在1.6版本引入。

各元件的關係:

Kubernetes 的架構由一個master和多個minion組成,master通過 api提供服務,接受kubectl的請求來排程管理整個叢集。

Replication controller定義了需要執行的多個pod 或者容器,如果當前叢集中執行的 pod或容器達不到配置的數量,replication controller 會排程容器在多個 minion 上執行,保證叢集中的pod數量。

service 則定義真實對外提供的服務,一個 service 會對應後端執行的多個 container

Kubernetes 是個管理平臺,minion上的kube-proxy擁有提供真實服務公網 IP。客戶端訪問kubernetes中提供的服務,是直接訪問到kube-proxy上的。

⑤在 Kubernetespod是一個基本單元,一個pod 可以是提供相同功能的多個 container,這些容器會被部署在同一個 minion上。minion是執行Kubelet中容器的物理機。minion接受master的指令建立pod 或者容器。

3. k8s原理持續更新…

相關文章