Kubernetes is a container orchestration technology founded by google. In 2015, It was made open source and currently being managed by CNCF Foundation.
We will need kubernetes to manage our applications that are deployed in production environments. Kubernetes can be configured on physical hardware server as well as on a Virtual Machine.
Kubernetes provide us many capabilities in terms of scalability, high availability, auto scaling, load balancing incoming traffic, seamless upgrades and rollbacks.
Kubernetes works in master and slave model. All the containerized applications are deployed as a pod in a slave node. slave node a.k.a, worker node, minion etc., A master node can manage any number of worker nodes provided they have to be associated with master. A worker node can be registered or associated to a master node by using it's certificate. Once the worker node is associated, then the master node will start delegating tasks to worker node.
Kubernetes Architecture consists of Master and worker node.
A node is tagged as a master node when it is configured with 4 components namely, kube-api server, controller manager, etcd & scheduler.
A node is tagged as a worker node when it is configured with 3 components namely, kubelet, kube-proxy and container runtime.
Kube API server is a component that contains 100's of APIs and is used to talk to worker nodes and the components within the entire cluster. API Server listens on port 6443
controller manager is a component that will take care of lifecycle of cluster. It is will monitor the health status of pods, nodes and ensure that the cluster is always in desired state.
Scheduler is a components that delegates the tasks or jobs to worker nodes based on the configured constraints.
etcd is a key:value based cluster storage that manages all the secrets,
certificate etc., within the cluster.
Kubelet is a kubernetes agent that is installed on a worker node and is used to interact with kube-api server to do jobs.
Kube-proxy is a component installed in worker node that takes care of assigning IPs and traffic routing within the nodes.
container engine is a component installed in worker node that take care of running containers.