虚拟机如使用容器部署应用,无论在 Docker 还是 Kubernetes(K8s)网络模式使用 Bridge 模式,会为容器分配私有地址,地址段通常是根据 Docker 和 Kubernetes 的默认配置来决定的。请先确定其使用的 IPv4 地址段,仅可使用 192.168.0.0/16(192.168.0.0-192.168.255.255),不可使用:172.16.0.0/12(172.16.0.0-172.31.255.255)及10.0.0.0/8(10.0.0.0-10.255.255.255)地址段,以此避免数据通讯上的混乱,所造成的部分用户无法使用该应用。容器如使用自定义、overlay等模式手动设置私有地址时,也要遵循上述 IPv4 私有地址段使用原则。
Docker 默认桥接网络地址段
在 Docker 中,默认情况下,当你启动一个容器并且没有显式指定网络时,Docker 会自动将容器连接到默认的桥接网络 docker0。这个网络通常使用以下私有地址段:IPv4 地址段:172.17.0.0/16
这意味着默认情况下,Docker 容器将被分配在这个子网内的一个 IP 地址。例如,172.17.0.2、172.17.0.3 等。这个地址段属于 RFC1918 定义的私有地址空间,但已被校园网所使用。
Kubernetes 默认桥接网络地址段
在 Kubernetes 中,默认情况下,Pods 的网络配置可以由多种不同的 CNI(Container Network Interface)插件来处理。常见的 CNI 插件包括 Flannel、Calico、Cilium 等,它们各自可能会有不同的默认地址段。
例如,Flannel 是一个常用的 CNI 插件,它默认使用以下私有地址段:IPv4 地址段:10.244.0.0/16,此地址段虽然也属于 RFC1918 定义的私有地址空间,但已被校园网所使用。
而 Calico 另外一个常用的 CNI 插件,它的默认地址段可以是:IPv4 地址段:192.168.0.0/16,这段的地址可以使用。
Kubernetes 的网络配置通常是通过集群级别的配置来确定的,可以通过修改集群的网络配置来更改默认的地址段。