最底层是runc,上边为containerd,(或者dokcer-ce+shim),最上层为kubernet
一个物理机器、节点上的本地kubernet组件负责当前节点上所有容器的创建、监控、管理、销毁,kubernet负责与APIServer进行通讯(list-watch机制:kubernet会时刻、主动去与APIServer进行通讯,获取感兴趣的资源)
那么使用kubernet apply,kubernet run创建pod时是由谁来创建呢?
kubernet自己不会创建容器,是通过容器运行时调用docker或者containerd来创建,
如果使用containerd那么就会直接使用CRI-O(容器运行时接口);如果使用docker-ce会需要有(containerd-shim垫片)
在docker中,当命令发布后,会通过镜像创建一个容器出来,(容器实质上可以理解为在内存中创建的几个进程,进程以镜像为基座只读层,在其上有upper可写层,最上边为merge挂载层)在创建容器时,容器运行时runc负责在底层内核级别对这组进程进行资源隔离,共同协作运行容器。
其中,kubernet负责资源编排,管理容器,它站在更高层面指挥各个节点上的containerd运行容器应用。
