控制器会在本地运行 Docker,以便为非超级用户帐户运行 NSX Advanced Load Balancer CLI 服务器提供沙箱。默认情况下,Docker 会创建一个具有 IP 地址 172.17.0.1/16
的 Linux 网桥接口。此接口可能会导致此 172.17.0.1/16
网络范围内的控制器与主机之间发生冲突和通信故障,因为控制器将通过 Docker 网桥为整个 /16
子网提供本地下一跃点路由。
以下是可能的症状:
无法从任何具有
172.17.x.x (172.17.0.0/16)
IP 地址的主机与控制器通信。vCenter、NSX Manager 等位于
172.17.0.0/16
子网中时,云集成失败。虚拟服务放置失败,并显示以下状态:
状态:资源
原因:主机:<esxi 主机> 无法从控制器访问。
解决方案
使用管理员帐户和密码通过 SSH 访问控制器。
使用 sudo -s 成为 root 用户
创建包含以下内容的 /etc/docker/daemon.json 文件(默认情况下,此文件不存在):
{ "bip": "172.26.0.1/16" }
将上面的示例 IP 地址替换为与网络上正在使用的子网不冲突的地址。这必须是主机地址,而不是网络地址。前缀长度应介于
/16
到/28
之间。创建文件后,使用 systemctl restart docker 代码重新启动 Docker 守护进程。
通过检查 ifconfig 中显示的 docker0 接口的 IP 地址是否与在
daemon.json
文件中指定的网桥 IP 相对应,验证所做的更改是否正常工作。
对于控制器集群,必须在每个单独的控制器上执行这些步骤。
对 daemon.json
的修改将在从 NSX Advanced Load Balancer 版本 18.2.11 和 20.1.2 及之后的控制器升级中保留下来。