This blog title caught my eye: The Great Kubernetes Virtualization Debate. In it, the author notes that there apparently is some uncertainty of whether or not the nodes should be on virtual machines or physical ones. I'm not that deep into Kubernetes, but my impression from some talks by contributors to the project is that is was designed to work on VMs, especially in the cloud.
If you have never worked with containers, they are like very lightweight VMs. They are really a virtual OS and are designed to run one application in isolation. That could be SQL Server or a C# component or a Java process. These are isolated from anything else on the host, just like VM is separate from another. The overhead is low, which is why containers are getting popular. However, you quickly realize that managing hundreds of containers is likely harder than managing dozens of VMs.
Enter Kubernetes, which is an orchestrator for containers. There are other orchestrators, but Kubernetes has become the most popular right now. This software clusters together lots of nodes and spreads containers across them for compute and storage. One great thing is that you can take a container running on your laptop, move it to a local Kubernetes cluster in your data center and also to a cloud hosted Kubernetes service and it will run the same way everywhere.
If we are trying to reduce overhead, does it make sense to use another virtualization layer? I don't know. Certainly there is a slight performance cost here, but most of us use VMs extensively now for all sorts of workloads. There can be a cost here, depending on your VM structure, but if you want to have a hybrid infrastructure, you are going to use VMs in the cloud.
My Kubernetes knowledge is relatively light. I've built small clusters locally and in the cloud, and we use it at Redgate for a few things. I don't know enough to say whether VMs make sense on premise, but I like simplicity and consistency, so my vote would be to use VMs, just as I would in the cloud.