Physical Network perspective
Source: A Reference Architecture for Deploying WSO2 Middleware on Kubernetes
A Kubernetes cluster is comprised of a master node and a set of slave nodes. The Kubernetes master includes following main components:
- API Server: The API server exposes four APIs; Kubernetes API, Extensions API, Autoscaling API, and Batch API. These are used for communicating with the Kubernetes cluster and executing container cluster operations.
- Scheduler: The Scheduler's responsibility is to monitor the resource usage of each node and scheduling containers according to resource availability.
- Controller Manager: Controller manager monitors the current state of the applications deployed on Kubernetes via the API server and makes sure that it meets the desired state.
- etcd: etcd is a database - key/value store implemented by CoreOS. Kubernetes uses that as the persistence storage of all of its API objects.
In each Kubernetes node following components are installed:
- Kubelet: Kubelet is the agent that runs on each node. It makes use of the pod specification for creating containers and managing them.
- Kube-proxy: Kube-proxy is all about networking. It runs in each node for load balancing pods. It uses iptable rules for doing simple TCP, UDP stream forwarding or round robin TCP, UDP forwarding.
Inside a node
- Container runtimes: For every OS that's running Docker as a container runtime in this case. We'll talk more about other container runtimes later. That's running containers, right. So, we got these four blocks (c1,c2,c3,cX) here. Those are maybe your app.
An overlay network
Kubernetes make use of an overlay network for providing networking capabilities similar to a virtual machine-based environment. It allows container-to-container communication throughout the cluster and will provide unique IP addresses for each container.
If such a software defined network (SDN) is not used, the container runtimes in each node will have an isolated network and subsequently the above networking features will not be available. This is one of the key advantages of Kubernetes over other container cluster management solutions, such as Apache Mesos.