# Architecture and Components

<figure><img src="/files/Wahu3HpdgOzNlJpxLHi9" alt=""><figcaption></figcaption></figure>

## Terminology

### **Cluster**

* Multiple Nodes form a Cluster

### **Node**

* A compute instance (physical or virtual server)

### **Pod**

* Consists of one or more Containers

### **Container**

* A lightweight, portable OS (e.g., Linux) generally containing an application with all required components

### **Container Runtime Engine**

* Software that manages and runs containers on the Node e.g., Docker, containerd, cri-o, gVisor, etc.&#x20;

***

## Control Plane Components

* The Control Plane consists of the core components needed to manage a Kubernetes cluster
* These sit on the Master Node (which is abstracted from you in a cloud-managed service like AWS EKS)

### kube-apiserver

* The kube-apiserver is the primary management component of Kubernetes
* This exposes an API that we can authenticate to and perform tasks like monitoring the state of the cluster and components, deploying Pods, grabbing information, and more
* All components of the cluster will go through this API

### etcd

* A key/value store used for storing all Kubernetes cluster data
* The data is immutable, anytime it needs to be updated, the whole structure is re-generated with the new data
* The key/value store always preserves the previous values so this data will grow indefinitely unless it's configured to remove old versions

### kube-scheduler

* Assigns newly created Pods to suitable Nodes in the Cluster based on things like resource requirements, constraints, and policies&#x20;

### kube-controller-manager

* Moniters the state of the cluster through the api-server and makes changes attempting to move the current state towards the desired state
* Many controllers can exist on a Cluster e.g., replication controller, deployment controller, etc.&#x20;

***

## Data Plane Components

### kubelet&#x20;

* An agent running on each Node (also including Master Node) responsible for ensuring Pods are healthy and running
* Receives instructions from the kube-scheduler to create/delete Pods&#x20;

### kube-proxy

* A network proxy which maintains network rules on the Nodes e.g., when a new Service is deployed the kube-proxy ensures a rule maps it to the correct Pods running the service
* This can be replaced with Container Network Interface (CNI) Network plugins such as Cilium, Flannel, Calico, and others


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.techwithtyler.dev/kubernetes-and-containers/kubernetes-general-info/architecture-and-components.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
