1.关于kubernetes弃用docker shim层:
    kubelet调用docker的架构
    }``A0P4)3VS}AS{HJVWDHCC.png
    传统的docker架构(在1.12以上的版本docker-daemon拆分出containerd来实际创建容器)
    3F15B777CCA25F54AFFA8B9DBD511C3C.jpg
    kubelet调用其他容器的架构和docker的区别
    ![276@AF$B3MU[55CP1D(1FJ.png](https://cdn.nlark.com/yuque/0/2021/png/221273/1612404214343-9191c6c9-622c-4efd-85e5-9dd00967585f.png#align=left&display=inline&height=188&margin=%5Bobject%20Object%5D&name=276%40AF%24B3MU%5B55CP1D%281FJ.png&originHeight=404&originWidth=917&size=18750&status=done&style=none&width=427)
    实际弃用的是docker-shim层,但仍有社区作为维护

    2.kubelet的架构组成
    kubelet是一个必须要独立部署的组件而不能容器化,因为容器化的组件
    在他的namespace里不能和主机的文件系统交互。
    ![GEEWB(TK2WP{TJS2CZ{`$G.png
    kubelet 主要负责同容器运行时(比如 Docker 项目)交互,依赖CRI
    容器运行时实际创建容器是和Linux系统交互,依赖OCI
    还有两个插件与 kubelet 进行交互分别是
    CNI(Network):容器的网络平台,如flannel,calico等,提供network namesoace
    CSI(Storage):用于将任意块和文件存储系统暴露给Kubernetes