本節內容提綱:
- Kubernetes架構
- Kubernetes組成
一、Kubernetes架構
Kubernetes是一個用於高可用的計算機集群管理系統,把這些計算機群集連接在一起,可作為單個單元工作,也可邏輯的形成一個整體。 Kubernetes 的抽象性允許您將容器化的應用程序部署到集群,而不必專門將其綁定到單個計算機。為了利用這種新的部署模型,應用程序需要將它們與各個主機分離的方式打包: 它們需要被容器化。容器化應用程序比過去的部署模型更靈活和可用,其中應用程序直接安裝到特定機器上,作為深入集成到主機中的軟件包。 Kubernetes 在一個集群上以更有效的方式自動分發和調度容器。
二、Kubernetes組成
Kubernetes集群由兩大部分組成:
(1)集群的調度節點:Master節點
(2)應用程序實際運行的工作節點:Node節點
1、Master節點:
Master節點主要由四個部分組成:apiserver、schedule、controller-manager和etcd。
(1)API Server: 負責對外提供RESTful的kubernetes API 的服務,它是系統管理指令的統一接口,任何對資源的增刪該查都要交給apiserver處理後再交給etcd。kubectl(kubernetes提供的客戶端工具,該工具內部是對kubernetes API的調用)是直接和apiserver交互的。
(2)Schedule: 負責調度Pod到合適的Node上,如果把Scheduler看成一個黑匣子,那麼它的輸入是Pod和由多個Node組成的列表,輸出是Pod和一個Node的綁定。kubernetes目前提供了調度算法,同樣也保留了接口。用戶根據自己的需求定義自己的調度算法。
(3)Controller-manager: 如果APIserver做的是前臺的工作的話,那麼Controller-manager就是負責後臺的。每一個資源都對應一個控制器。而control manager就是負責管理這些控制器的,比如我們通過APIServer創建了一個Pod,當這個Pod創建成功後,apiserver的任務就算完成了。
(4)Etcd:Etcd是一個高可用的鍵值存儲系統,kubernetes使用它來存儲各個資源的狀態,從而實現了Restful的API。
2、Node節點:
每個Node節點主要由二個部分組成:Runtime、kublet和kube-proxy。
(1)Kublet:Kublet是Master在每個Node節點上面的agent,是Node節點上面最重要的模塊,它負責維護和管理該Node上的所有容器,但是如果容器不是通過kubernetes創建的,它並不會管理。本質上,它負責使Pod的運行狀態與期望的狀態一致。
(2)Kube-proxy:Kube-proxy實現了Kubernetes中的服務發現和反向代理功能。Kube-proxy支持TCP和UDP連接轉發,默認基Round Robin算法將客戶端流量轉發到與Service對應的一組後端Pod。服務發現方面,Kube-proxy使用Etcd的Watch機制監控集群中Service和Endpoint對象數據的動態變化,並且維護一個Service到Endpoint的映射關係,從而保證了後端Pod的IP地址變化不會對訪問者造成影響,另外,Kube-proxy還支持Session保持。
(3)runtime:runtime指的是容器運行環境,目前Kubernetes支持docker和rkt等容器引擎。
閱讀更多 DoDo在線 的文章