1. 程式人生 > >kubernetes原始碼解讀——原始碼結構

kubernetes原始碼解讀——原始碼結構

kubernetes原始碼初識

整體結構

kubernetes原始碼主要分為包括pkg、cmd、plugin、test四個目錄。其中各個包的主要功能如下:

  1. pkg是kubernetes的主體程式碼,裡面實現了kubernetes的主體邏輯
  2. cmd是kubernetes的所有後臺程序的程式碼,主要是各個子模組的啟動程式碼,具體的實現邏輯在pkg下
  3. plugin主要是kube-scheduler和一些外掛

主要包功能介紹

以下簡要介紹一下各個子包的功能

pkg

包名 用途 備註
api kubernetes api主要包括最新版本的Rest API介面的類,並提供資料格式驗證轉換工具類,對應版本號資料夾下的檔案描述了特定的版本如何序列化儲存和網路
client Kubernetes 中公用的客戶端部分,實現對物件的具體操作增刪該查操作
cloudprovider kubernetes 提供對aws、azure、gce、cloudstack、mesos等雲供應商提供了介面支援,目前包括負載均衡、例項、zone資訊、路由資訊等
controller kubernetes controller主要包括各個controller的實現邏輯,為各類資源如replication、endpoint、node等的增刪改等邏輯提供派發和執行
credentialprovider kubernetes credentialprovider 為docker 映象倉庫貢獻者提供許可權認證
generated kubernetes generated包是所有生成的檔案的目標檔案,一般這裡面的檔案日常是不進行改動的
kubectl kuernetes kubectl模組是kubernetes的命令列工具,提供apiserver的各個介面的命令列操作,包括各類資源的增刪改查、擴容等一系列命令工具
kubelet kuernetes kubelet模組是kubernetes的核心模組,該模組負責node層的pod管理,完成pod及容器的建立,執行pod的刪除同步等操作等等
master kubernetes master負責叢集中master節點的執行管理、api安裝、各個元件的執行埠分配、NodeRegistry、PodRegistry等的建立工作
runtime kubernetes runtime實現不同版本api之間的適配,實現不同api版本之間資料結構的轉換

cmd

包括kubernetes所以後臺程序的程式碼包括apiserver、controller manager、proxy、kuberlet等程序

plugin

主要包括排程模組的程式碼實現,用於執行具體的Scheduler的排程工作。