hostlocal网络
从4.0版本开始,平台支持了一种特殊的经典网络模式:hostlocal(宿主机本地网络)。这种模式专门为容器主机设计,在一台宿主机上实现了一个本地的网络环境,仅在宿主机内可见(类似docker0)。
1. 实现效果
容器主机使用hostlocal网络实现如下效果:
- 网络隔离 容器内可以分配一个独立的IP地址,但容器之间无法互相访问该IP地址,容器内只能通过该IP地址访问外部网络或者被外部网络访问
- 访问外部网络 容器访问外部网络时,自动在宿主机上进行SNAT,使用宿主机的IP地址访问外部网络
- 暴露服务端口 可以配置host_local网卡的port_mapping规则,将宿主机上的TCP或UDP端口映射到容器主机内的指定端口,外部网络通过访问宿主机的指定端口实现主动访问容器主机内的对应端口
2. 工作原理
host_local类型的IP子网配置在二层网络上,宿主机上host服务启动时,会拉取本宿主机所对接的二层网络的所有host_local IP子网,并将这些IP子网的网关配置在对应二层网络的网桥设备上。同时,配置openvswitch流表,实现: (1)阻止容器网络内节点之间互相访问; (2)实现容器访问外网的SNAT规则; (3)配置端口映射规则,实现外部访问宿主机端口并转发到容器内端口的DNAT规则。