Usually when I am working with an ESXi server and configuring it myself, it is in my lab environment. As that lab environment exists in an HP Blade chassis with 10GbE connections between all the hosts there is not much call for connecting to the network via EtherChannel. When we are working on customer sites, it is usually the customer who is in control of how the hosts connect to the network, even then I do not see many configuration in the wild that use EtherChannels to connect to the Hypervisor
When I was asked to help with an issue connecting to an ESXi server via an EtherChannel I was very interested to help, mostly because - at the time of writing this - I am studying for my CCNP Switch exam.
Initially we suspected that the issue was coming from the vSwitch configuration but we quickly found that wasn't the case. The host was responding to pings from the switch but you couldn't ping outside of the subnet, so we moved on to investigating the routing which all checked out fine.
The next point of investigation was the port-channel. After doing a few show commands to see what the status was we tried hard configuring the channel-protocol to LACP as we were quite sure that PAgP would not be supported on the ESXi side of the connection. My colleagues had previously connected successfully to the VMware host by changing the switchports to access ports so we were narrowing in on the port-channels being the culprit.
After testing a few more port-channel implementations we noticed that there was a stipulation in the document around which EtherChannel load-balancing type should be used. As it turns out, you need to use src-dst-ip load balancing.
switch(config)#port-channel load-balance src-dst-ip
Once this config was in the switch we restarted the interfaces and everything came up. There is another recommendation in the VMware KB article for the load balancing type of the vSwitch in that it should be set to load balance by IP Hash. By default, the vSwitch will load balance by originating Port ID which is how the vSwitch was set when everything started working. However, as the KB article recommends the use of IP Hash load balancing, that it was what we set it for.