当前位置:网站首页>Containerd series - what is containerd?

Containerd series - what is containerd?

2022-07-05 03:55:00 PinkGranite

This article will be about containerd To introduce
Reference resources :
Introduction to containerd - Phil Estes, IBM $ Derek McGowan, Docker

1. What is? containerd?

containerd

  • containerd It's a “container runtime”: What is? container runtime?runtime It refers to the container runtime , in other words containerd Given container runtime support . But it should be noted that :containerd It is not a real runtime , It has the ability of runtime to some extent ( Mainly due to its downstream runtime Support ). As can be seen from the above figure ,containerd It undertakes the functions of higher-level container management ( for example Docker,K8S), The lower layer is equipped with a lower level runtime( for example runc wait —— About runc You can refer to Series articles ).
  • containerd Is a resource manager (resource manager):containerd You can manage the lifecycle of containers , Involving the creation of containers 、 Delete and so on ; Images can be managed ; You can manage file system snapshots ; You can manage the meta information and dependent information of the container .
  • containerd It is a tightly coupled project (tightly scoped):containerd Ben's body size is very much , Many functions are built on the extension system .

2. containerd The history of

 history

  • Original containerd It's just Docker A companion application running , As the connection docker And the ground floor runc Middleware
  • With continuous development ,containerd Gradually from a container supervisor( That is, it only has basic container detection and execution functions ) Degenerate into a fully functional container runtime( The whole process )
  • although containerd The birth and docker Interwovenness , however containerd Designed a new container and image management interface
  • CRI As a plug-in independent of container process, it has been integrated into containerd in , send containerd Be in line with CRI Standard container runtime

3. Why use containerd?

 Scope of application

  • K8S Users :K8S At present, it is the most widely used container management project in industrial applications , and K8S Yes containerd With considerable and good support ,containerd stay K8S Is also the most mature .
  • For developers : If you are a developer , Use docker kit Do image development , Then you have used it in real time containerd,docker Itself is also right containerd Supported
  • Edge development : If you are a developer of edge applications ,containerd Due to the small volume , The advantages of high efficiency are widely used in edge virtualization scenes , for example K3S( It can be understood as K8S A smaller version of , Applicable to edge scenes , Please take a look at the exam here
  • For service providers :containerd It can well support external service access , Reference resources faasd,IBM Cloud Function etc.
     stability
  • Program stability :containerd Of daemon Even if it collapses, it will not affect the running containers and programs
  • Efficient use of resources :containerd daemon The memory space and resources required are very small ( So it also applies to edge scenes )
  • File system resource management :contianerd Provides a garbage collection mechanism , For redundant and unused file system resources ,containerd It can be recycled automatically , Reduce the invalid occupation of file system resources

4. containerd Architecture (containerd1.4.x)

4.1 The overall structure

 The overall structure

  • overall contianerd from Client、API、Core、Backend( Or you could say API、Core、Backend It's a whole , by containerd core)、Shim It consists of five parts , Build on the system and image warehouse
  • Control information and data from Client Flow right , Know the container runtime shim

4.2 Client

  • Client It's user use containerd Direct interaction objects in the process , about containerd For beginners ,Client It is the module that should be introduced first , It provides rich functions and flexibility for exploring new features and extensions
  • Container Management The sub modules are Client Module with container runtimes Sub modules for interaction : This sub module can provide OCI specification establish ,snapshot Creation and other functions
  • Image Distribution yes Client The sub module of image management in , Provides image import , export , Pull , Push and other functions
  • containerd The project tries to keep core Part of the concise refinement , therefore Client Part also undertakes more functions and requirements accordingly
  • Client The module can be self configured —— It means Client Very flexible

4.3 containerd core(API、Core、Backend)

  • This section defines containerd The types of data structures used in and API Interface
  • Why? containerd To provide so many interfaces ( whether containerd Too dependent on the use of interfaces )?—— In fact, these interfaces and data types are set for containerd core Become an intermediate station for data information forwarding , Based on the definition of data structure type ,core It can track the data passing through this part for better use
  • Data from core Part of it flows through and is core Track and record , That means core part ( And some of them plugins) No need to store data —— It's also convenient core Medium GC Modules work , Reduce the risk of challenges such as data inconsistency
  • Yes Plugin The support of containerd core An important feature of , This makes containerd It has good scalability and flexibility
  • plugin Can be like core Send a message ,core You can also ask plugin Send a message ,backend It is also pluggable (plugable)—— for example core Medium Snapshots That is to say plugin The way to achieve
  • Each plug-in can be self configured , These configurations will also be included containerd In the main configuration of
  • If we have a service application , So it can also be done through grpc Way and core Interact —— for example core Medium CRI The module itself exists as a service , adopt grpc Way and core Interact
  • By default Client Will pass proxy Service opportunities grpc And core Interact

4.4 Shim

  • containerd core Medium Runtime The sub module can start a new runtime shim, It can pass oci spec And other control information to Shim
  • Shims Is really owned container processes The role of control ,Shim As container The direct parent process of exists ( I don't know whether it's right here
  • containerd core Through a lightweight grpc protocal ttrpc And Shim Interact ; If you restart containerd, that containerd Need to reconnect with shim Establish a connection to pass instructions and data
  • There are already many different Shim Realization , One of the most widely used is runc
  • runhcs Is running on the windows Upper Shim
原网站

版权声明
本文为[PinkGranite]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140720151915.html