为每个 VCH 控制 VIC(VMware vSphere 集成容器)中容器的入口流量的实际方法是什么?

What is the defacto way to control ingress traffic for containers in VIC (VMware vSphere Integrated Containers) for each VCH?

我正在 vCenter 上的 VMware VIC 中的 VCH(虚拟容器主机)上部署 Docker 容器。我通常会使用 Traefik 作为代理来控制入口,但这在 VIC 中是不可能的,因为 VIC 不允许访问 docker.sock API。控制每个容器的入口流量的实际方法是什么?

我想我明白了。答案在于容器网络。对于VIC,真的没有必要使用NAT或者代理服务器来发布端口。

  1. 第一步是在vSphere中创建一个三层可路由容器端口组(我在vSphere中创建的端口组叫做'vic-containers'.

  2. 然后第二步是创建一个带有第 3 层可路由容器网络的 VCH,该网络附加到新创建的容器端口组

vic-machine-operating_system create
--target 'Administrator@vsphere.local':password@vcenter_server_address/dc1
--compute-resource cluster1
--image-store datastore1
--bridge-network vch1-bridge
--public-network vic-public
--public-network-ip 192.168.1.10/24
--public-network-gateway 192.168.1.1
--client-network vic-client
--client-network-ip 192.168.2.10/24
--client-network-gateway 192.168.2.0/24,192.168.128.0/24:192.168.2.1
--management-network vic-management
--management-network-ip 192.168.3.10/24
--management-network-gateway 192.168.3.0/24,192.168.128.0/24:192.168.3.1
--dns-server 192.168.10.10
--dns-server 192.168.10.11
--container-network vic-containers:container-network
--container-network-gateway vic-containers:192.168.100.1/24
--container-network-dns vic-containers:192.168.100.10
--container-network-dns vic-containers:192.168.100.11
--container-network-ip-range vic-containers:192.168.100.0/24
--container-network-firewall vic-containers:outbound
--thumbprint *certificate_thumbprint*
--name vch1
--asymmetric-routes
  1. 第三步是创建一个docker容器,发布一个端口,附加到容器网络并分配一个静态IP地址。
docker -H 192.168.3.10:2375 create -p 80 --name nginx nginx
docker -H 192.168.3.10:2375 network connect --ip 192.168.100.11 container-network nginx
docker -H 192.168.3.10:2375 start nginx