Can you tell me all components of Master and Worker nodes?
Yes, here they are:
What is etcd and it’s role in Kubernetes?
- 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)?
- 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?
- 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?
- 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
- Node Controller
What are different Worker Node components?
- Container Runtime
What is Container Runtime?
Container runtime is responsible for running containers on worker node.
Different container runtime you can use with Kubernetes are:
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.
- kubectl cluster-info
- kubectl get nodes
Use the below syntax to run kubectl commands from your terminal window:
kubectl [command] [TYPE] [NAME] [flags]
- 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.
kubectl [command] [TYPE] [NAME] -o <output_format>
Example of supported output_format: json, jsonpath=<template>, name, wide, yaml etc