深究Containerd源碼-1-簡介和概覽
代碼基于v1.7.0-beta.0-89-g344da9edb
containerd是一款高性能容器運行時管理程序,通常以守護進程方式運行,docker和kubelet通過grpc對接containerd,南向可對接流行的容器運行時,如runc,kata
通過官方(https://containerd.io)的架構(gòu)圖,containerd從邏輯上分成三層:
API層提供北向服務(wù)GRPC調(diào)用接口和度量數(shù)據(jù)采集接口,API支持Kuberntes CRI標準和containerd client兩種形式
Core層是核心邏輯層,包含服務(wù)和元數(shù)據(jù)
Backend層主要是南向?qū)硬僮飨到y(tǒng)容器運行時

從containerd源碼看,每一個模塊都是一個plugin,并且相同類型的plugin以樹狀組成子系統(tǒng),例如containerd啟動流程
總體上containerd的類圖containerd Server包括Plugins和Config

如下containerd啟動流程,核心為server.New構(gòu)建containerd.Server實例,LoadPlugins會獲取所有注冊到register變量的plugin,完成plugin初始化和加載。每個plugin的包中通過func init調(diào)用plugin.Register將自己注冊到register變量,例如CRI Plugin注冊
containerd/pkg/cri/cri.go

后續(xù)我們重點分析一下從CRI開始容器的生命周期代碼流程。
開源的東西,不需要說明出處,就說你自己寫的
標簽: