Virtualizing your environment allows you to work with IT systems quickly and securely. However, not every application can be containerized and packaged in a Docker container - this is where KVM comes to the rescue. KVM, or Kernel-based Virtual Machine, is an environment on which it is possible to run a virtual machine. The association with VirtualBox is most accurate - the idea is exactly the same. There are, of course, more technologies allowing to create virtual environments - such as VMware or Hyper-V.
Going towards microservice architecture, you should be aware of complexity that it brings. Multiplication of replicas causes your infrastructure harder to monitor and maintain. You are simply not capable of keep an eye of each service by yourself. Additionally Kubernetes (k8s) infrastructure by itself must be monitored.
While working with Kubernetes, sooner or later you will need to call one application from the another. It’s obvious that we need a part of infrastructure which act as a Load Balancer and for the outside call we need also reverse proxy component. And this is where k8s Service and Ingress Controller come into play.