Docker 端口绑定不是避免了对 Kubernetes 复杂网络模型的需求吗?
Doesn't Docker port binding obviate the need for Kubernetes' complex networking model?
Kubernetes 有一个相当复杂的网络模型,似乎 以规避 Docker 默认网络的严重缺陷为前提:
默认情况下 Docker 容器无法直接从外部世界联系,因为它们的 IP 地址是 local/private 它们所在的子网。
为了避免这种情况,Kubernetes 有一个非常复杂的网络模型,除其他外,它要求您创建自己的平面 IP space,然后由所有主机和容器共享(pods), 从而为每个 pod 提供自己的 public IP。
但是请问:Docker port binding不是已经解决了吗?如果没有,那么还缺少端口绑定呢,需要Kubernetes使用他们使用的网络解决方案?
这在 motivation section of Kubernetes's networking design doc 中有详细描述。
从本质上讲,依赖端口绑定需要动态端口映射,以避免需要相同端口的不同容器之间发生冲突(例如,很多应用程序需要端口 80)。虽然动态端口映射可以工作,但它也会导致很多问题,如文档中所述。
Kubernetes 有一个相当复杂的网络模型,似乎 以规避 Docker 默认网络的严重缺陷为前提:
默认情况下 Docker 容器无法直接从外部世界联系,因为它们的 IP 地址是 local/private 它们所在的子网。
为了避免这种情况,Kubernetes 有一个非常复杂的网络模型,除其他外,它要求您创建自己的平面 IP space,然后由所有主机和容器共享(pods), 从而为每个 pod 提供自己的 public IP。
但是请问:Docker port binding不是已经解决了吗?如果没有,那么还缺少端口绑定呢,需要Kubernetes使用他们使用的网络解决方案?
这在 motivation section of Kubernetes's networking design doc 中有详细描述。
从本质上讲,依赖端口绑定需要动态端口映射,以避免需要相同端口的不同容器之间发生冲突(例如,很多应用程序需要端口 80)。虽然动态端口映射可以工作,但它也会导致很多问题,如文档中所述。