目录
虽然kubernetes官方在1.20版已经宣布弃用docker支持(其实是对dockershim的支持),但是包括1.20以及此后的版本其实都还可以使用,一直到kubernetes1.24版本。
翻译之后:
那么,什么是dockershim呢?dockershim是一个 grpc 服务,监听一个socket供 kubelet 连接,dockershim收到 kubelet 的请求后,将其转化为 REST API 请求,再发送给docker daemon。我们上一张图就清楚了,其实就是硬编码到kubelet的一个模块,其作用就是,充当cri-client同cri服务端通信。因为dockershim硬编码在了kubelet中,只要我们安装了docker,原生就支持,无需多余的配置。如下图kubernetes1.19+docker18.*的典型架构。
但是,到了kubernetes1.24版本,dockershim从kubelet中被删除,导致我们不得不去考虑使用哪款cri实现(containerd、cri-o等)。kubelet默认请求的socket监听情况(kubelet --container-runtime-endpoint参数的默认值):
/var/run/dockershim.sock文件是kubelet服务启动时创建的,这样很好的说明了带有dockershim的kubelet版本对docker的原生支持。下面我们看一下其冗长的调用关系:
而现在呢?