Skip to main content

ALL important Kubernetes “things” (objects/resources)

Updated 17 min readMarkdown

chapter-2
I’ll list ALL important Kubernetes “things” (objects/resources) and explain each in very lame, easy language.

Think of Kubernetes as a big container management game 🎮
Each “thing” has one simple job.


🧠 Big Picture (Very Simple)

Kubernetes has:

  • Containers → inside Pods
  • Objects → rules + helpers around Pods

We’ll go from basic → advanced.


🧱 CORE / BASIC OBJECTS


1️⃣ Namespace

What it is:
👉 A folder inside Kubernetes

Why:

  • Separate teams
  • Separate apps
  • Avoid name clash

Lame explanation:

Different rooms in the same house 🏠


2️⃣ Pod

What it is:
👉 Smallest thing Kubernetes runs

Contains:

  • One or more containers

Lame explanation:

A lunchbox that holds containers 🍱

📌 Pods are temporary (can die anytime)


3️⃣ Container

What it is:
👉 Your actual app

Lame explanation:

The food inside the lunchbox 🍔

📌 Kubernetes does NOT manage containers directly
It manages Pods


🧑‍🏭 WORKLOAD OBJECTS (Run Your App)


4️⃣ Deployment

What it is:
👉 Boss for stateless apps

Does:

  • Creates Pods
  • Restarts Pods
  • Updates Pods

Lame explanation:

A manager who makes sure workers are always present 👨‍💼


5️⃣ ReplicaSet

What it is:
👉 Pod counter

Does:

  • Keeps exact number of Pods running

Lame explanation:

A headcount checker 👀

📌 Usually you don’t create this manually


6️⃣ StatefulSet

What it is:
👉 For apps that need identity & storage

Examples:

  • Database
  • Kafka
  • MongoDB

Lame explanation:

Each worker has their own name and locker 🔐


7️⃣ DaemonSet

What it is:
👉 Runs one pod on every node

Examples:

  • Logs
  • Monitoring

Lame explanation:

One security guard per building 🏢👮


8️⃣ Job

What it is:
👉 Run once and finish

Examples:

  • Backup
  • Data migration

Lame explanation:

Do the task and go home 🧹


9️⃣ CronJob

What it is:
👉 Job that runs on a schedule

Examples:

  • Night backups
  • Cleanup

Lame explanation:

Alarm clock job ⏰


🌐 NETWORKING OBJECTS


🔟 Service

What it is:
👉 Stable way to access Pods

Why:

  • Pods die
  • IPs change

Lame explanation:

A permanent phone number 📞 for changing people


1️⃣1️⃣ Service Types (Important)

ClusterIP

👉 Inside cluster only
Lame: internal office extension 📠

NodePort

👉 Opens port on node
Lame: door with number 🚪

LoadBalancer

👉 Cloud load balancer
Lame: hotel receptionist ☎️


1️⃣2️⃣ Ingress

What it is:
👉 HTTP/HTTPS traffic router

Lame explanation:

Traffic police 🚦 for web traffic


💾 STORAGE OBJECTS


1️⃣3️⃣ Volume

What it is:
👉 Storage for pod

Lame explanation:

Hard disk plugged into pod 💽


1️⃣4️⃣ PersistentVolume (PV)

What it is:
👉 Actual storage

Lame explanation:

Big storage warehouse 🏬


1️⃣5️⃣ PersistentVolumeClaim (PVC)

What it is:
👉 Request for storage

Lame explanation:

“I need 10GB please” 📝


1️⃣6️⃣ StorageClass

What it is:
👉 Storage type template

Lame explanation:

Storage menu 📋 (SSD / HDD)


🔐 CONFIG & SECRETS


1️⃣7️⃣ ConfigMap

What it is:
👉 App config (non-secret)

Lame explanation:

Settings file 📄


1️⃣8️⃣ Secret

What it is:
👉 Passwords / tokens

Lame explanation:

Locked envelope 🔐


👮 SECURITY & ACCESS


1️⃣9️⃣ ServiceAccount

What it is:
👉 Identity for pods

Lame explanation:

ID card for pods 🪪


2️⃣0️⃣ Role / ClusterRole

What it is:
👉 What you can do

Lame explanation:

Permission list 📜


2️⃣1️⃣ RoleBinding / ClusterRoleBinding

What it is:
👉 Attach permissions

Lame explanation:

Giving keys to someone 🔑


⚙️ CLUSTER & NODE OBJECTS


2️⃣2️⃣ Node

What it is:
👉 Machine (VM or server)

Lame explanation:

Computer that does the work 💻


2️⃣3️⃣ Endpoints / EndpointSlice

What it is:
👉 List of pod IPs behind service

Lame explanation:

Actual phone numbers behind a contact 📱


🧠 ADVANCED / INTERNAL STUFF


2️⃣4️⃣ Controller

What it is:
👉 Auto-fix robot

Lame explanation:

Robot checking rules 🤖


2️⃣5️⃣ CustomResourceDefinition (CRD)

What it is:
👉 Create your own Kubernetes object

Lame explanation:

Add your own game rules 🎲


2️⃣6️⃣ HorizontalPodAutoscaler (HPA)

What it is:
👉 Auto scale pods

Lame explanation:

Hire more workers when busy 📈


🧾 FINAL CHEAT SHEET (ONE LOOK)

Category Objects
Basics Namespace, Pod
Workloads Deployment, ReplicaSet, StatefulSet, DaemonSet
One-time Job, CronJob
Network Service, Ingress
Storage PV, PVC, StorageClass
Config ConfigMap, Secret
Security ServiceAccount, Role, RoleBinding
Infra Node, Endpoints
Scaling HPA
Extend CRD

🔚 Ultra-Lame One Line

Kubernetes is just Pods + rules + helpers
Everything else exists to keep Pods alive and reachable


If you want next, I can:

  • Draw real-life diagram
  • Explain which ones you REALLY use daily
  • Explain object creation flow
  • Explain YAML relationship (who creates whom)

Just say 😄

Perfect 👍
I’ll explain both in very lame + real-life style, with ASCII diagrams and YAML flow, so you can see how Kubernetes works instead of memorizing it.

No fancy words. Promise 😄


PART 1️⃣ REAL-LIFE DIAGRAM (Kubernetes as a Company)

🏢 Kubernetes = A Company

Let’s map Kubernetes to real life office.

You (kubectl)
   |
   v
HR Office (API Server)
   |
   v
Company Register (etcd)

Now the actual workers 👇

Deployment (Manager)
   |
   v
ReplicaSet (Attendance checker)
   |
   v
Pods (Employees)
   |
   v
Containers (Actual work)

FULL REAL-LIFE FLOW DIAGRAM

┌───────────────┐
│   kubectl     │  ← You give orders
└───────┬───────┘
        |
        v
┌────────────────────┐
│  API SERVER (HR)   │  ← Checks rules & permissions
└───────┬────────────┘
        |
        v
┌────────────────────┐
│      etcd          │  ← Company notebook (truth)
└────────────────────┘
        |
        v
┌────────────────────┐
│ Deployment (Boss)  │  ← “I want 3 workers”
└───────┬────────────┘
        |
        v
┌────────────────────┐
│ ReplicaSet         │  ← “Do we have 3?”
└───────┬────────────┘
        |
        v
┌────────────────────┐
│ Pods               │  ← Employees
└───────┬────────────┘
        |
        v
┌────────────────────┐
│ Containers         │  ← Actual app running
└────────────────────┘

Networking (Very Lame)

Internet/User
     |
     v
Ingress (Gatekeeper)
     |
     v
Service (Reception desk)
     |
     v
Pods (Employees)

📌 Users never talk directly to Pods
They always go through Service


PART 2️⃣ YAML RELATIONSHIP (THIS IS THE MOST IMPORTANT)

Let’s see how YAML files are connected.


1️⃣ Deployment YAML (Top Boss)

You create ONLY this 👇

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: app
        image: nginx

What this means (lame):

“I want 2 copies of this app always running”


What Deployment secretly creates

You create:

Deployment

Kubernetes auto-creates:

ReplicaSet
└── Pod
    └── Container

📌 You NEVER write ReplicaSet YAML normally


Relationship Diagram (YAML View)

Deployment.yaml
   |
   v
ReplicaSet (auto)
   |
   v
Pod (from template)
   |
   v
Container (image)

2️⃣ Pod YAML (Lowest Level)

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: nginx
    image: nginx

Meaning:

“Run one pod, no backup, no safety”

📌 If this pod dies → game over


3️⃣ Why Deployment is Better than Pod

Pod Deployment
No restart guarantee Auto restart
Manual Self-healing
Bad for prod Best for prod

4️⃣ Service YAML (Phone Number)

Pods change IPs. Service fixes that.

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 80

Meaning (lame):

“Any pod with label app=my-app, give me their IPs”


Label Matching (VERY IMPORTANT)

Pod labels:
app: my-app
Service selector:
app: my-app

✔️ Match = traffic flows
❌ No match = service useless


Relationship Diagram (Service)

Service
   |
   v
Label Selector
   |
   v
Pods

5️⃣ Full YAML Relationship (BIG PICTURE)

Deployment
   |
   v
ReplicaSet
   |
   v
Pod (labels)
   |
   v
Container
Service
   |
   v
Label selector
   |
   v
Pod
Ingress
   |
   v
Service
   |
   v
Pod

6️⃣ StatefulSet YAML Relationship (Special Case)

kind: StatefulSet

Meaning:

“Each pod is special and unique”

Creates:

pod-0
pod-1
pod-2

Each has:

  • Fixed name
  • Fixed storage

📌 Used for DBs


7️⃣ Storage Relationship (Lame)

PVC (Request)
   |
   v
PV (Actual Disk)
   |
   v
Pod

Example:

volumeMounts:
- mountPath: /data
  name: storage

“Attach hard disk to pod”


8️⃣ Complete Real-Life Mapping Table

Kubernetes Real Life
Namespace Room
Deployment Manager
ReplicaSet Attendance checker
Pod Employee
Container Actual work
Service Phone number
Ingress Security gate
ConfigMap Settings file
Secret Password
PV Hard disk
PVC Disk request

🔚 SUPER IMPORTANT FINAL LINE 🧠

You usually create only 3 YAMLs in real life:

  1. Deployment
  2. Service
  3. Ingress

Everything else is auto magic ✨


If you want next (same lame style 😄):

  • Full end-to-end YAML example
  • What happens when pod dies
  • How rolling update works visually
  • How labels & selectors break apps

Perfect 😄
I’ll explain ALL of them, end-to-end, very lame language, real-life story, diagrams, and full YAML relationships.

Think of this as Kubernetes explained to a school kid, but still 100% correct.


🏢 KUBERNETES = A COMPANY (ONE STORY)

You (kubectl)
   |
   v
Office Reception (API Server)
   |
   v
Company Register (etcd)

Everything else works automatically.


1️⃣ FULL END-TO-END FLOW (FROM YAML TO RUNNING APP)

You apply YAML

kubectl apply -f app.yaml

What happens (lame):

  1. You submit a form
  2. Reception (API Server) accepts it
  3. HR writes it in register (etcd)
  4. Workers start working

2️⃣ WORKLOAD FLOW (WHO CREATES WHOM)

Deployment (Boss)
   |
   v
ReplicaSet (Headcount checker)
   |
   v
Pod (Employee)
   |
   v
Container (Actual work)

📌 You create only Deployment


3️⃣ NETWORK FLOW (USER → APP)

User
  |
  v
Ingress (Main Gate)
  |
  v
Service (Reception Desk)
  |
  v
Pods (Employees)

📌 User never talks to pod directly


4️⃣ STORAGE FLOW (DATA)

PVC (Request)
   |
   v
PV (Disk)
   |
   v
Pod

📌 Pod can die, disk survives


5️⃣ CONFIG FLOW (SETTINGS & PASSWORDS)

ConfigMap ----┐
              v
            Pod
              ^
Secret --------┘

📌 App reads config, not hard-coded


6️⃣ SCALING FLOW

CPU High 📈
   |
   v
HPA
   |
   v
Deployment
   |
   v
More Pods

📌 Kubernetes hires more workers automatically


7️⃣ POD DEATH & SELF-HEALING

Pod dies 💀

Pod crash
   |
   v
ReplicaSet notices
   |
   v
New Pod created

📌 This is why Kubernetes is powerful


8️⃣ ROLLING UPDATE (ZERO DOWNTIME)

You update image in Deployment

Old Pod → New Pod → Old Pod removed

Diagram:

Pod v1  Pod v1
   ↓       ↓
Pod v2  Pod v1
   ↓       ↓
Pod v2  Pod v2

📌 Users never notice


9️⃣ LABELS & SELECTORS (GLUE OF KUBERNETES)

Pod

labels:
  app: myapp

Service

selector:
  app: myapp

📌 No label match = no traffic ❌


🔟 COMPLETE REAL-WORLD YAML (ALL TOGETHER)


🔹 Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: app
        image: nginx
        ports:
        - containerPort: 80

🔹 Service

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 80

🔹 Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ing
spec:
  rules:
  - host: myapp.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp-svc
            port:
              number: 80

1️⃣1️⃣ WHAT HAPPENS WHEN SOMETHING BREAKS

Problem What K8s does
Pod crash Restart
Node down Move pods
High traffic Scale
Config change Restart pods
Image update Rolling update

1️⃣2️⃣ DAILY DEVOPS COMMAND MAP

Command Meaning
get Quick look
describe Why broken
logs App error
apply Create/update
delete pod Test self-heal

1️⃣3️⃣ ONE-LINE SUMMARY (VERY IMPORTANT)

Kubernetes only does one thing:
👉 Make reality match your YAML


🔚 FINAL BIG CHEAT SHEET 🧠

You write YAML
↓
API Server stores it
↓
Controllers compare state
↓
Pods created
↓
Service exposes
↓
Ingress routes
↓
Users access app

If you want next (same lame style 😄):

  • Why Pods get Pending
  • Why Services don’t work
  • How DNS works in Kubernetes
  • How kube-proxy actually routes traffic

Alright 👍
Now I’ll slow down, go deep, and still keep the language very simple / lame, but with full technical correctness.

I’ll explain ALL FOUR, one by one, with:

  • real-life story
  • step-by-step flow
  • diagrams
  • common mistakes

1️⃣ WHY PODS GO INTO PENDING (IN DETAIL)

What you see

kubectl get pods
mypod   Pending

Pod is created, but not running.


Very simple meaning

Kubernetes wants to run the pod,
but cannot find a place to put it.


Real-life example 🏢

  • You hired an employee
  • But:
    • No chair
    • No desk
    • No electricity

So employee is waiting → Pending


Backend flow (simple but detailed)

Deployment creates Pod
        |
        v
Scheduler tries to pick node
        |
        v
Fails → Pod stays Pending

MAIN REASONS (MOST IMPORTANT)

1️⃣ Not enough CPU / Memory ❗

Your pod says:

resources:
  requests:
    cpu: "2"
    memory: "4Gi"

But node has:

1 CPU, 2Gi RAM

👉 Scheduler says:

“No node can handle this pod”

📌 Pod stays Pending forever


2️⃣ Node Selector / Affinity mismatch

nodeSelector:
  disktype: ssd

But no node has that label.

👉 Scheduler finds zero matching nodes


3️⃣ Taints & Tolerations

Node says:

“Don’t schedule pods here unless allowed”

Pod does NOT allow it.

👉 Pod stuck Pending


4️⃣ PVC not bound (VERY COMMON)

Pod needs storage:

persistentVolumeClaim:
  claimName: mypvc

But:

  • No PV available
  • StorageClass wrong

👉 Pod waits for disk → Pending


How to debug (REAL LIFE)

kubectl describe pod mypod

Look at Events 👇

FailedScheduling
0/3 nodes are available: insufficient cpu

📌 Events ALWAYS tell the truth


One-line summary

Pending = Scheduler cannot place the pod


2️⃣ WHY SERVICES DON’T WORK (IN DETAIL)

This is one of the biggest beginner problems 😄


What you expect

curl service-ip

But:
❌ No response
❌ Timeout


Lame meaning

Service exists,
but it has no one to talk to


VERY IMPORTANT DIAGRAM

Service
   |
   v
Selector
   |
   v
Pods

If any link breaks, service fails.


REASON 1️⃣: LABEL MISMATCH (90% CASES)

Pod labels:

labels:
  app: myapp

Service selector:

selector:
  app: my-app   ❌

⚠️ myapp ≠ my-app

👉 Service finds zero pods


How to check

kubectl get endpoints myservice

If you see:

<none>

❌ Service is useless


REASON 2️⃣: Pod not Ready

Even if pod is Running:

Running  0/1 Ready

Service will NOT send traffic.

Why?

  • Readiness probe failed
  • App not ready

REASON 3️⃣: Wrong port

Service:

port: 80
targetPort: 8080

But container listens on:

3000

👉 Traffic goes nowhere


REASON 4️⃣: You used Pod IP directly

Pod IP:

  • Changes
  • Dies
  • Not stable

📌 Always use Service


One-line summary

Service fails because it can’t find ready pods


3️⃣ HOW DNS WORKS IN KUBERNETES (IN DETAIL)

This is magic 🪄 but simple.


What you do

Inside a pod:

curl myservice

And it works 🤯


Who does DNS?

👉 CoreDNS

It runs as pods:

kube-system namespace

DNS FLOW (VERY IMPORTANT)

Pod
 |
 | asks: myservice
 v
CoreDNS
 |
 | checks Kubernetes API
 v
Service IP

Service DNS Format

Same namespace:

myservice

Full name:

myservice.mynamespace.svc.cluster.local

Real-life analogy 📞

  • You call “Mom”
  • Phone contacts list resolves number
  • You don’t dial number directly

Same with DNS.


What DNS does NOT do ❌

  • It does NOT check if app is healthy
  • It only returns Service IP

If DNS is broken

Check:

kubectl get pods -n kube-system

Look for:

coredns Running

One-line summary

DNS converts service name → service IP


4️⃣ HOW kube-proxy ROUTES TRAFFIC (IN DETAIL)

This is the traffic engineer 🚦


Simple meaning

kube-proxy decides
“Which pod should get this request?”


kube-proxy does NOT proxy traffic directly ❗

It:

  • Programs iptables or ipvs
  • Kernel does the routing

TRAFFIC FLOW (VERY IMPORTANT)

Client
  |
  v
Service IP
  |
  v
iptables rule
  |
  v
One Pod IP

How kube-proxy knows pod IPs

kube-proxy
   |
   v
Watches API Server
   |
   v
Gets Endpoints

Endpoints:

10.1.1.3
10.1.1.4

Load balancing (simple)

  • kube-proxy uses:
    • Round-robin
  • Each request → different pod

What if pod dies?

  1. Pod removed
  2. Endpoints updated
  3. kube-proxy updates rules
  4. Traffic stops going there

📌 No restart needed


One-line summary

kube-proxy teaches Linux how to send traffic to pods


🔚 FINAL BIG PICTURE (ALL TOGETHER)

User
 |
 v
Ingress
 |
 v
Service (DNS name)
 |
 v
kube-proxy rules
 |
 v
Pod (Ready)
 |
 v
Container

🧠 FINAL SUPER-SIMPLE SUMMARY

Problem Root Cause
Pending pod No node / no resource
Service not working No matching ready pods
DNS Name → service IP
kube-proxy Service IP → pod IP

If you want next (still lame but deep 😄):

  • Complete debug checklist
  • Real production failures
  • How EKS/GKE/AKS differs
  • What happens during node crash
  • Kubernetes interview questions (with answers)

No comments yet. Be the first to comment.