1. 程式人生 > >Kubernetes原理簡介

Kubernetes原理簡介

Kubernetes 的排程流程

Controller Manager 是叢集內部的管理控制中心,負責叢集內的 Node、Pod副本、Endpoint、Namespace、Service Account、Resource Quota 等的管理,並執行自動化修復流程,以確保叢集處於預期的工作狀態。

Controller Manager 內部包含,Replication Controller、Node Controller、ResourceQuota Controller、Namespace Controller、ServiceAccount Controller、Token Controller、Service Controller、Endpoint Controller 等。Controller Manager 通過這些子控制器通過 API Server 監控系統的共享狀態,並不斷修正系統的狀態,直到系統處於設定的“預期狀態”。這些控制器的具體作用如下:

Replication Controller 的作用是確保叢集中一個 RC 所關聯的 Pod 都保持一定數量的 Pod 副本處於正常執行狀態。如果 Pod 副本數過多,則銷燬一些 Pod 副本;反之,則新增 Pod 副本。
Node Controller 負責發現、管理和監控叢集中的各個 Node 節點。Kuberlet 在啟動時通過 API Server 註冊節點資訊,並定時向 API Server 傳送節點資訊。Node Controller 通過 API Server 定期讀取這些資訊,並予以處理。
ResourceQuota Controller 確保指定的物件在額定的系統資源內工資,不會超量佔用,避免某些業務程序的設計實現導致整個系統宕機。
Namespace Controller 通過 API Server 定時讀取 Namespace 的資訊,並刪除標記為“Terminating”的 Namespace,同時,刪除該 Namespace 下的 ServiceAccount、RC、Pod、Secret、ResourceQuota 等資源。
ServiceAccount Controller 與 Token Controller 是與安全相關的,主要負責預設賬戶的建立、私鑰的管理、證書和 Token 的管理等。
Service Controller 監控 Service 的變化,確保外部 LoadBalancer 被更新。
Endpoint Controller 監控 Service 和 Pod 的變化。如果 Service 被刪除,則刪除和 Service 對應的 Endpoint 物件。

Pod、RC和Service的關係

Pod 是一組容器的一個“單一集合體”,Kubernetes 中的最小任務排程單元。Pod 可以被排程到任意 Node 上恢復,同一個 Pod 裡的所有容器共享資源(網路、Volumes 等)。

RC(Replication Controller)是 Pod 的副本控制器,用於限定某種 Pod 的例項個數,屬於服務叢集的控制範疇。

Service 可以看做一組相同作用的 Pod 對外訪問的介面。

可見,Service 管理的是 Pod 組成的叢集,以叢集的方式來提供服務。在叢集中,Pod 可能被 RC 銷燬並再次建立,因此 RC 是用來控制 Service 內的 Pod 數量,是處於 Service 和 Pod 之間的一個管理層。

Service 的 Cluster IP 和 NodePort
Pod 的 IP 地址是 Docker 分配的,相對而言並不固定,由於 Pod 的生命週期比較短暫,可能被 RC 重新建立,因此新的 Pod 的 IP 也可能會變化。但是, Service 的 Cluster IP 相對固定,是由 Kubernetes 系統動態分配的,在Service 被關閉之前不會再變化。

Node 是 Kubernetes 叢集中的實際節點,NodePort 是節點上的實際埠,通過訪問這個埠,就能訪問內部的 Service 了。

Kubernetes 叢集的優勢

Kubernetes 叢集的優勢主要在於以下一些地方,

可以很容易的開發和部署分散式系統。
Kubernetes 是為微服務架構提供了很好的支援。將一個複雜的應用分解成多個互相連線的微服務,這就是微服務的思想。
可以無縫遷移到雲服務。
橫向擴充套件能力強。一個微服務背後可能有多個副本在支援,副本的多少可以隨負載的情況來調整,可伸縮性大大加強。