深究Kata-containers源碼-2-containerd-shim-kata-v2組件分析
代碼基于3.1.0-alpha1,commit: 20196048bf5f0b8e08d8fef2371ff421c6dacd9b
同containerd-shim-runc-v2,其啟動流程代碼一致,區(qū)別在于,調用containerd/runtime/v2/shim/run時,傳人initFunc,而manager為nil
github.com/kata-containers/kata-containers/src/runtime/cmd/containerd-shim-kata-v2/main.go
github.com/containerd/containerd/runtime/v2/shim/shim.go
當manager為nil時,會調用initFunc,即github.com/kata-containers/kata-containers/src/runtime/pkg/containerd-shim-v2/service.go New函數(shù),生成TaskService和shimToManager實例。
看流程總體流程如下:

主要流程和containerd-shim
-runc-v2部分大致相同,已經(jīng)分析過,不再贅述,主要分析kata部分代碼,看下類圖關系

github.com/kata-containers/kata-containers/src/runtime/pkg/containerd-shim-v2/service.go New函數(shù)主要生成service實例,然后通過帶入taskService實現(xiàn)TTRPC服務注冊,通過shimToManager.Start實現(xiàn)啟動。啟動完成后通過service.Create TTPRC接口實現(xiàn)容器或沙箱的創(chuàng)建。
繼續(xù)分析Create流程,如下:

根據(jù)Sandbox/SingleContainer和PodContainer兩個case,分別調用CreateSandbox和CreateContainer,這個調用源碼主要來自于kata-containers/src/runtime/virtcontainer包。virtcontainer包下節(jié)繼續(xù)分析。
開源的東西,轉發(fā)不需要說明出處,就說你自己寫的