Fundamentals
Last updated
Last updated
Kubernetes and Docker
Kubernetes use docker host to host the applications in the form of docker container.
Node
Node (minions) is a machine (physical or virtual) on which kubernetes software are installed. It is a worker machine and that is where containers will be launched by kubernetes.
A cluster is a set of nodes grouped together. Why you need a set of odes? If one node fail, you have other node to support.
Master
Master is responsible for managing this cluster and store information about the cluster's member, manage the workload, etc. The actual orchestration of containers on worker node.
When you install kubernetes on a system, you are actually installing these following components:
API server - Front end for kubernetes (CLI, etc). All talks to API server to interact with kubernetes
cluster.
etcd server - Distributed reliable key value. Store all data used to manage the cluster. It implements logs within the cluster to ensure there are no conflicts between the masters.
kubelet service - Agent that runs on each node in the cluster. The agent is responsible for making sure that the containers are running on the nodes as expected.
container runtime - Underlying software that is used to run the containers. In this case, it is docker.
controller - The brain behind the container orchestration (i.e. monitor the health of the node and replace failed node)
scheduler - Responsible for distributing works or container across multiple nodes. It looks for newly created containers and assign them to nodes
Different components are installed in Master vs Worker Node
Worker Node
To run docker container on the system, we need container runtime installed. So, in this case we use Docker
Has kubelet agent that is interacting with the master to provide health information of the worker node and carry out action required by the master on worker node.
Master
Has a kube-apiserver
Had etcd to store all information of worker nodes and other master
Has controller and scheduler