Docker端口绑定是否不需要Kubernetes的复杂networking模型?

Kubernetes有一个相当复杂的networking模型, 似乎是在克服Docker默认networking的一个严重缺陷的基础上:

默认情况下,Docker容器不能直接从外部联系,因为它们的IP地址对于它们所在的子网是本地/私有的。

为了规避这个问题,Kubernetes有一个非常复杂的networking模型,除了其他的要求,你需要创build你自己的平坦的IP空间,然后由所有的主机和容器(pod)共享,从而为每个pod提供自己的公有IP。

但是我问:是不是已经通过Docker端口绑定解决了? 如果没有,那么端口绑定又是什么缺点,那要求Kubernetes使用他们使用的networking解决scheme?

这在Kubernetesnetworkingdevise文档的动机部分中有很好的描述。

从本质上讲,依靠端口绑定需要dynamic端口映射来避免不同容器之间需要相同端口的冲突(例如许多应用需要端口80)。 虽然dynamic端口映射可以起作用,但也会导致很多问题,如文档中所述。