Kubernetes为什么将会弃用Docker支持? - Dixie3Flatline


从Kubernetes v1.20起,您将收到Docker弃用警告。之后,您将需要使用其他容器运行时Runtime。是的,这会破坏您的集群。您可能会认为Docker == Kubernetes。不是这样!
我们称之为Docker的东西实际上是整个技术堆栈,其中包括称为容器的东西以及其他一些东西,例如一些奇特的UX更改,这些变化使人类更易于交互。容器化本身就是高级容器的运行时Runtime。
不过,Kubernetes并不需要所有这些花哨的UX东西。它只需要容器运行时Runtime。使用Docker(整个堆栈)作为您的容器运行时意味着:Kubernetes必须使用称为dockershim的东西与它实际需要的部分进行交互。
这是因为Docker不符合CRI(容器运行时接口)。Dockershim会让K8s解决这个问题,但这也意味着我们要维护一个完全独立的事物Dockershim,以便可以将Docker用作我们的运行时Runtime。
这糟透了,不方便,解决方案是删除抽象Dockershim,仅在Kubernetes中使用containerd作为我们的容器运行时。同样,因为Kubernetes不是人,它不需要UX增强功能。
因此,您不必惊慌。Docker还没有死(还),它仍然有其用途。您只是不能再将其用作Kubernetes中的容器运行时了。在下一个版本之后,您需要切换到containerd。
是的,您可以继续使用旧版本的Kubernetes。
新Kubernetes仍将运行由Docker构建的镜像!这对于开发人员来说并不会改变很多,那些镜像仍然符合OCI(开放容器倡议),并且containerd知道如何处理它们。
使用containerd或CRI-O信息:https://kubernetes.io/docs/setup/production-environment/container-runtimes/