Kubernetes hosts your applications in containers in an automated way so that you can easily deploy many instances of your application. There are many components involved in making this possible.
The Kubernetes cluster consists of a set of nodes which can be physical or virtual, and hosts applications in the form of containers. With Kubernetes, you can track your containers and manage the entire loading process for your application.
Kubernetes Components Overview
Master Node: The master node is responsible for managing the Kubernetes cluster, storing information regarding the different nodes, planning which containers go where, and monitoring the nodes and containers on them. The master nodes do all of these using a component known as the control plane component.
ETCD Cluster: ETCD is a database that stores information in a
key:value format. The ETCD cluster stores information about the cluster.
Pod: A pod is an abstraction over a container. The pod creates the running environment or a layer on top of the container. Kubernetes offers an out of the box virtual network that means each pod gets its own IP address.
Kube Scheduler: A Kubernetes scheduler identifies the right node to place a container on based on the resource requirements, worker nodes, capacity, taints, tolerations, node affinity rules, etc.
Service: A service is a permanent IP address that can be attached to each pod. Your App and pod will have its own service and database. To access it you've to create an external service which opens the communication from external or internal sources.
Ingress: Ingress lets you forward your traffic and route your HTTP and HTTPS traffic to the appropriate hosts.
ConfigMap: ConfigMap lets you store your database endpoints. Your ConfigMap will contain configuration data like URLs of database, instances, and servers.
Secrets: Secrets are like ConfigMap, but the difference is that Secrets are used to store Secret data, credentials. It's stored in base64 encoded format. Once you're done you'll connect it to your pods, so your pods will see your service data and read from your secrets.
Node Controller: The Node controller lets you onboard new nodes to the cluster and handle situations where nodes become unavailable.
Replication Controller: The replication controller ensures that the desired number of containers run simultaneously in a replication group.
Kube API Server: The Kube API server is the primary component of Kubernetes, and it’s responsible for orchestrating all operations within the cluster and exposing the Kubernetes API used by external users to perform management operations on the cluster as well as monitoring the state of the cluster and make necessary changes as required.
Container runtime engine(Docker): If you want to host your control plane components as containers, you can use Docker or other runtime engines like containerd or rocket.
Kubelet: The agent runs on each node in a cluster; it listens for instructions on the Kube API server and deploys or destroys containers on the nodes as required. The Kube APi server periodically fetches status resorts from the Kubelet to monitor the status of nodes and containers on them.
Kube-Proxy Service: The Kube proxy service ensures that the necessary rules are in place on the worker nodes to allow the containers running on them to reach and communicate with each other.
Automating Kubernetes Infrastructure with CTO.ai
CTO.ai frees platform teams from the complexity of managing their cluster master nodes and worker nodes. With our automated infrastructure workflows and container driven autoscaling, you can build faster and ship services with speed.