导图社区 containerd学习笔记
containerd的总体架构图,希望对大家有所帮助,containerd的总体架构图,希望对大家有所帮助
编辑于2019-08-02 04:59:27containerd架构基础
containerd基础数据结构及初始化
containerd架构图
数据结构
公共模块plugin中register Registeration数组,plugin Register 函数将各个Plugin注册到该数组中,LoadPlugin将该数组中注册的 Plugin转换为map形式,便于应用
每个plugin的InitFn都会返回Interface{}类型的plugin registratioon中的Init函数会将plugin赋值到Plugin的instance中
初始化
1.建立信号处理机制
2. 加载并解析配置文件
3. 初始化服务组件,注册无init函数的插件,依次调用各个Plugin的InitFn进行初始化
Content Plugin、Metadata Plugin、Snapshot Plugin和Proxy Plugin
4. 初始化grpc server, 将各个Plugin的service(若存在)注册到grpc server中
containerd命令组件
config 用于生成containerd默认配置文件
publish 向containerd发布事件
oci-hooks 提供oci运行时钩子的基础组件
app.Action 主流程
containerd plugin ctr plugins ls
Content Plugin io.containerd.content.v1
content
Metadata Plugin io.containerd.metadata.v1
bolt
Snapshot Plugin io.containerd.snapshotter.v1
btrfs
aufs
native
overlayfs
zfs
differ plugin io.containerd.differ.v1
walking
service plugin io.containerd.service.v1
containers-service
content-service
diff-service
images-service
leases-service
namespaces-service
snapshots-service
task-service
Internal Plugin io.containerd.internal.v1
restart
opts
GRPC Plugin io.containerd.grpc.v1
containers
content
diff
healthcheck
images
namespaces
snapshots
tasks
version
cri
Runtime Plugin
io.containerd.runtime.v1
linux
io.containerd.runtime.v2
tasks
Proxy Plugin 用于自定义外部插件,比如说snapshot plugin等等
config
oci open container initiative
runtime spec
image spec
文件系统
config 文件
manifest文件
index文件
cni
AddNetworkList(net *NetworkConfigList, rt *RuntimeConf) (types.Result, error)
DelNetworkList(net *NetworkConfigList, rt *RuntimeConf) error
AddNetwork(net *NetworkConfig, rt *RuntimeConf) (types.Result, error)
DelNetwork(net *NetworkConfig, rt *RuntimeConf) error
cri
Runtime Service
rpc Version(VersionRequest) returns (VersionResponse) {}
rpc RunPodSandbox(RunPodSandboxRequest) returns (RunPodSandboxResponse) {}
StopPodSandbox(StopPodSandboxRequest) returns (StopPodSandboxResponse) {}
rpc RemovePodSandbox(RemovePodSandboxRequest) returns(RemovePodSandboxResponse) {}
rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse) {}
rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {}
rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse) {}
rpc StartContainer(StartContainerRequest) returns (StartContainerResponse) {}
rpc StopContainer(StopContainerRequest) returns (StopContainerResponse) {}
rpc RemoveContainer(RemoveContainerRequest) returns (RemoveContainerResponse) {}
rpc ListContainers(ListContainersRequest) returns (ListContainersResponse) {}
rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {}
rpc UpdateContainerResources(UpdateContainerResourcesRequest) returns (UpdateContainerResourcesResponse) {}
rpc ExecSync(ExecSyncRequest) returns (ExecSyncResponse) {}
rpc Exec(ExecRequest) returns (ExecResponse) {}
rpc Attach(AttachRequest) returns (AttachResponse) {}
rpc PortForward(PortForwardRequest) returns (PortForwardResponse) {}
rpc ContainerStats(ContainerStatsRequest) returns (ContainerStatsResponse) {}
rpc ListContainerStats(ListContainerStatsRequest) returns (ListContainerStatsResponse) {}
rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfigResponse) {}
rpc Status(StatusRequest) returns (StatusResponse) {}
Image Service
rpc ListImages(ListImagesRequest) returns (ListImagesResponse) {}
rpc ImageStatus(ImageStatusRequest) returns (ImageStatusResponse) {}
rpc PullImage(PullImageRequest) returns (PullImageResponse) {}
rpc RemoveImage(RemoveImageRequest) returns (RemoveImageResponse) {}
rpc ImageFsInfo(ImageFsInfoRequest) returns (ImageFsInfoResponse) {}
type MetricsConfig struct { Address string `toml:"address"` GRPCHistogram bool `toml:"grpc_histogram"` }
type Debug struct { Address string `toml:"address"` UID int `toml:"uid"` GID int `toml:"gid"` Level string `toml:"level"` }
type GRPCConfig struct { Address string `toml:"address"` UID int `toml:"uid"` GID int `toml:"gid"` MaxRecvMsgSize int `toml:"max_recv_message_size"` MaxSendMsgSize int `toml:"max_send_message_size"` }
type Config struct { 、 Root string `toml:"root"` State string `toml:"state"` GRPC GRPCConfig `toml:"grpc"` Debug Debug `toml:"debug"` Metrics MetricsConfig `toml:"metrics"` DisabledPlugins []string `toml:"disabled_plugins"` Plugins map[string]toml.Primitive `toml:"plugins"` OOMScore int `toml:"oom_score"` Cgroup CgroupConfig `toml:"cgroup"` ProxyPlugins map[string]ProxyPlugin `toml:"proxy_plugins"` md toml.MetaData }