为什么不在Docker中使用主机网络,因为Docker和Kubernetes网络是如此复杂

时间:2019-01-05 03:11:11

标签: docker kubernetes

使用docker可以简化CI / CD,但同时也带来了复杂性,并不是每个人都可以通过选择Flannel,Calco等开源解决方案来拥有docker网络。 那么,为什么不在docker中使用主机网络,或者在docker中使用主机网络又会丢失什么呢? 我知道港口冲突只是一点,其他吗?

1 个答案:

答案 0 :(得分:3)

问题的答案分为两部分:

  1. Pod必须具有单独的,可集群路由的IP地址,并且对回收它们应该非常谨慎
  2. 如果愿意,可以不使用任何软件定义的网络(SDN)

因此,在第一部分中,提供足够大的CIDR来容纳支持跨每个命名空间运行的每个Pod 所需的地址范围通常非常麻烦。足够大,可以避免很长时间内回收地址。因此,拥有SDN可以使用“假”地址,而不必知道这些地址就可以打扰“真实”网络。无需更新路由器,无需防火墙,无需DHCP。

也就是说,与第二部分一样,您不必使用SDN:这正是container network interface (CNI)设计用来覆盖的内容。您可以使用让自己最快乐的CNI提供程序,包括使用static IP addressesthe outer network's DHCP server

但是您对端口冲突的评论居高不下,原因不仅是hostNetwork: true,而且还不想这样做。我实际上不确定默认的kubernetes调度程序是否知道hostNetwork: true以及在ports:上声明的containers:以避免共同调度两个可能发生冲突的容器。我猜想尝试一下,看看,或者更好的是,不要尝试-使用CNI,以便下一个尝试与您的群集进行交互的可怜人不会找到雪花设置。