03 | Kubernetes Master & Worker Node Components

Can you tell me all components of Master and Worker nodes?

Yes, here they are:

What is etcd and it’s role in Kubernetes?

etcd is:

  • Distributed key-value store
  • Used by Kubernetes to store all data used to manage the cluster:
    • It stores configuration data used by nodes.
    • It also stores the current state of the cluster.
    • It is used in Kubernetes for service discovery and leader election.
    • It is also used in Kubernetes for distributed locking. It is used for implementing locks within the cluster to ensure there are no conflicts between the Masters.

What is the role of API Server (kube-apiserver)?

Role:

  • API server acts as the front-end for kubernetes.
    • Exposes RESTful API for various operations in cluster
  • kubectl is CLI client available (not part of master components)  to interact with API Server .
  • The users, management devices, Command line interfaces all talk to the API server to interact with the Kubernetes cluster.

What is the role of Scheduler?

Role:

  • Assigns workloads to worker nodes based on workload requirements.
  • It also tracks capacity on each host to ensure a specific node is not carrying excess work.

What is the role of Controller Manager?

Role:

  • Controllers are the brain behind orchestration. 
  • They are responsible for noticing and responding when nodes or containers or endpoints goes down. 
    • The controllers makes decisions to bring up new containers in such cases. 
  • Manages different controllers
    • Node Controller
      • Ensures nodes are up and running
      • Brings up nodes if it goes down
    • Replication Controller
      • Ensures correct number of pods are running
    • Endpoint Controller
      • Manage workload life cycles
    • Service Account and Token Controller

What are different Worker Node components?

  • Container Runtime
  • kubelet
  • kube-proxy

What is Container Runtime?

Container runtime is responsible for running containers on worker node.

Different container runtime you can use with Kubernetes are:

  • Docker
  • rkt
  • CRI-O
  • runc

What is the function of kubelet?

This is the main point of contact between worker node and rest of cluster. 

  • Responsible for interacting with Master
    • Send health information to Master
    • Carry out actions (commands and work) requested by master Node
    • Controls container runtime to launch or destroy the container.
  • Interacts with the etcd store to read configuration details or write new values.
  • In case kubelet notices any issues with the Pod, it tries to restart the Pod on same node.

What is function of kube-proxy?

kube-proxy takes care of networking within Kubernetes.

  • It manages individual host subnetting and make services available to other components.
  • It forwards requests to the correct containers, can do primitive load balancing, and is generally responsible for making sure the networking environment is predictable and accessible, but isolated where appropriate.

What is kubectl?

Kubectl is a command line interface for interacting and running commands on Kubernetes clusters.

It is also called as Kube Control.

Example Commands

  • kubectl cluster-info
  • kubectl get nodes

Use the below syntax to run kubectl commands from your terminal window:

kubectl [command] [TYPE] [NAME] [flags]

Here:

  • command: Specifies the operation that you want to perform on one or more resources, for example create, get, describe, delete.
  • TYPE: Specifies the resource type. Resource types are case-insensitive and you can specify the singular, plural, or abbreviated forms. For example, the following commands produce the same output: kubectl get pod pod1, kubectl get pods pod1, kubectl get po pod1
  • NAME: Specifies the name of the resource. Names are case-sensitive. If the name is omitted, details for all resources are displayed, for example kubectl get pods.

How to format output of kubectl command?

The default output format for all kubectl commands is the human readable plain-text format. To output details to your terminal window in a specific format, you can add either the -o or –output flags to a supported kubectl command.

Syntax

kubectl [command] [TYPE] [NAME] -o <output_format>

Example of supported output_format: json, jsonpath=<template>, name, wide, yaml etc

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s