You might have noticed that many widely used languages are interpreted and use “runtimes” to execute your source code. In theory, most Node.js, Python, Ruby and Java. Theoretically code can be easily moved from one platform (Windows, Mac, Linux) but usually there are problematic issues caused by factors external to your application.
Why Kubernetes is The New Application Server article tells that the greatest things about containers is that you can deploy everything (for example, a Linux distribution, the JVM, the application server, libraries, configurations and, finally, your application) inside a pre-built container. Plus, executing a single container that has everything built in is incredibly easier than moving your code to a production environment. Before containers became very popular, several NFR (non-functional requirements) such as security, isolation, fault tolerance, configuration management, and others were provided by application servers. Kubernetes platform provides a great foundation for other projects such as Red Hat OpenShift, Istio, and Apache OpenWhisk.
Kubernetes Services By Example article is an introduction to concept of services in Kubernetes. In a nutshell, Kubernetes services are an abstraction for pods, providing a stable, virtual IP (VIP) address. Keeping the mapping between the VIP and the pods up-to-date is the job of kube-proxy.