1) What is kubernetes?
Kubernetes is an open source software that is used for container orchestration. To be more specific, k8 allows for the management of a large number of containers to increase scalability and reliability of a system.
2) Why do we need kubernetes?
We need kubernetes because using standalone containers does not provide a mechanism to manage the host. For example, one problem is that if you have multiple standalone containers running on a host, there is no good way to use them with a network load balancer because each container running on the host would need its own port number, but load balancers only work with a single port number. This is a problem since it limits the number of containers we can realistically use per host in a large system. K8 with its container orchestration mechanism solves this problem. Furthermore, K8 is needed to scale container based software to handle lots of traffic reliably. K8 can create thousands of containers as needed to meet demand. This is something that is not feasible if we are managing standalone containers without a tool like k8.
3) How does kubernetes work?
Kubernetes works by having all the containers work as a team instead of working completely independently. It does this by forming a 'cluster' in which all containers run. Each container in the cluster is stateless and replaceable. K8 manages the containers and the hosts, and can start and shut down containers as needed to meet the desired state.
4) Kubernetes architecture
Kubernetes architecture consists of a few key components:
Node: Refers to any machine containers can run on (either physical machine or VM).
Master server: This is a designated node that exercises authority over the worker nodes. It maintains state, assigns tasks, and can shut down or create containers as needed. Note that the master server has sub-components such as api-server, cluster store, controller of containers, and scheduler.
Worker node: This is a node that performs the actual work (i.e. runs containers). The worker node receives instructions from the master node on what work needs to be done. It can also create pods for the containers to run in. It has also has a few subcomponents such as kubelet, container engine, and proxy
Pods: Pods are a logical construct in k8 and are used to group containers. Each container in a pod has the same IP address.