控制器会在本地运行 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 主机> 无法从控制器访问。

解决方案

  1. 使用管理员帐户和密码通过 SSH 访问控制器。

  2. 使用 sudo -s 成为 root 用户

  3. 创建包含以下内容的 /etc/docker/daemon.json 文件(默认情况下,此文件不存在):

     {
      "bip": "172.26.0.1/16"
      }
  4. 将上面的示例 IP 地址替换为与网络上正在使用的子网不冲突的地址。这必须是主机地址,而不是网络地址。前缀长度应介于 /16/28 之间。

  5. 创建文件后,使用 systemctl restart docker 代码重新启动 Docker 守护进程。

  6. 通过检查 ifconfig 中显示的 docker0 接口的 IP 地址是否与在 daemon.json 文件中指定的网桥 IP 相对应,验证所做的更改是否正常工作。

注:

对于控制器集群,必须在每个单独的控制器上执行这些步骤。

daemon.json 的修改将在从 NSX Advanced Load Balancer 版本 18.2.11 和 20.1.2 及之后的控制器升级中保留下来。