Posts

Showing posts from January, 2026

☸️Kubernetes Pod States (Phases)

Kubernetes Pod States (Phases) A Pod can be in one of these main states during its lifecycle. 1. Pending Pod is created Not running yet Waiting for: a node images to pull resources “I exist, but I’m not running.” 2. Running Pod is assigned to a node Containers are started Application is running (or starting) “I’m running on a node.” 3. Succeeded All containers finished successfully Common for Job-based Pods “I finished my work successfully.” 4. Failed One or more containers exited with an error The Pod will not restart itself “I failed and stopped.” 5. Unknown Kubernetes cannot determine the Pod state Usually caused by node communication issues “I don’t know what’s happening.” 6. Terminating (not an official phase, but important) Pod is being deleted Grace...

☸️Understanding Kubernetes Workloads

Understanding Kubernetes Workloads (and how this connects to taints, tolerations, upgrades, and PDBs) This explanation ties together Kubernetes workloads, Pods, controllers, taints & tolerations, upgrades, and PodDisruptionBudgets. taints , tolerations , upgrades , and PDBs . What is a workload in Kubernetes? (plain meaning) A workload is your application running on Kubernetes. But Kubernetes never runs an application directly. It always runs Pods . Workload → Controller → Pods → Containers What is a Pod (and why it matters) A Pod is: The smallest deployable unit One or more containers Always scheduled on a single node Critical rule from the docs: If the node where a Pod is running fails, that Pod is considered ...

☸️ Kubernetes Taints and Tolerations(with Node Affinity)

Kubernetes Taints and Tolerations(with Node Affinity + EKS Upgrade Context) Kubernetes scheduling is the process of deciding which node runs a given Pod . This page explains how Kubernetes keeps Pods away from “inappropriate” nodes using taints (node-side restrictions) and tolerations (pod-side permissions), and how that relates to node affinity (pod-side attraction). 1) Core idea: attraction vs repulsion Node affinity (attraction) Node affinity is a property of Pods that attracts them to a set of nodes. You can express it as: Hard requirement (must match), or Preference (nice to have). Taints (repulsion) Taints are the opposite of node affinity. They allow a node to repel a set of Pods. Tolerations (permission) Tolerations are applied to Pods. A toleration allows the scheduler to schedule Pods onto nodes with matching taints. Important...

🧭 Understanding Argo CD Pods: Which One to Restart and Why

Understanding Argo CD Pods: Which One to Restart (and Why) When Argo CD behaves unexpectedly — sync stuck, UI showing wrong state, or deployments failing — the key is knowing which Argo CD pod actually does what . Restarting the wrong pod wastes time. Restarting the right one fixes the issue in minutes. Argo CD Core Pods Overview Run this command to see all Argo CD pods: kubectl -n argocd get pods You’ll typically see: argocd-application-controller-0 argocd-server argocd-repo-server argocd-dex-server 1. argocd-application-controller (The Most Important Pod) This is the brain and worker of Argo CD. What it does Compares Git state vs cluster state Executes syncs and deployments Applies manifests to Kubernetes Runs hooks and manages rollouts Updates application health and sync status Symptoms when it is broken Sync stuck or terminating another operation is already in progress Apps appear healthy but cannot deploy...

☁️ AWS Global Accelerator (GA) + Route 53

🟧☁️ AWS + 🌍 Global Accelerator (GA) + 🌐 Route 53 what they are and how they work together (especially for ALB/EKS). ☁️ AWS = Cloud platform 🌍 GA = Fast global routing + static IPs 🌐 Route 53 = DNS ☁️ What is AWS? AWS (Amazon Web Services) is Amazon’s cloud platform where you run servers, containers, databases, networking, DNS, monitoring, and more. EC2 (servers), EKS (Kubernetes), RDS (databases) ALB/NLB (load balancers), S3 (storage), Route 53 (DNS) What is AWS Global Accelerator? Global Accelerator (GA) improves availability and performance by routing users through AWS’s private global network to the nearest healthy endpoint . Key idea: Users hit GA (static Anycast IPs). GA picks the best Region/endpoint automatically. Static Anycast IPs (2 fixed IP addresse...

🐳 Build a Tiny Flask Web App in Docker (with Ports)

docker run -p 8080:5000 flask-hello Then open in your browser: http://localhost:8080 Step 6: Stop the container Press Ctrl + C in the terminal. Quick Troubleshooting Browser says “This site can’t be reached”: Make sure the container is running and you used the -p port mapping. Flask runs but not accessible: Confirm Flask is running with host="0.0.0.0" inside Docker (not 127.0.0.1 ). Port already in use: Try using a different host port, for example: docker run -p 9090:5000 flask-hello Next Post Ideas Docker image layers and caching (explained simply) Docker volumes : keeping data after a container stops Running the same container in Kubernetes (Pod basics)

☸️ Kubernetes Taints and Tolerations(with Node Affinity)

Kubernetes Taints and Tolerations(with Node Affinity + EKS Upgrade Context) Kubernetes scheduling is the process of deciding which node runs a given Pod . This page explains how Kubernetes keeps Pods away from “inappropriate” nodes using taints (node-side restrictions) and tolerations (pod-side permissions), and how that relates to node affinity (pod-side attraction). 1) Core idea: attraction vs repulsion Node affinity (attraction) Node affinity is a property of Pods that attracts them to a set of nodes. You can express it as: Hard requirement (must match), or Preference (nice to have). Taints (repulsion) Taints are the opposite of node affinity. They allow a node to repel a set of Pods. Tolerations (permission) Tolerations are applied to Pods. A toleration allows the scheduler to schedule Pods onto nodes with matching taints. Important...

🐳 Docker Filesystem Internals (AdvancEd)

Docker Filesystem Internals (Advanced) This post is for readers who already understand Docker basics and want to learn how Docker manages files internally. If you are new to Docker, read the beginner guide first. Containers Do NOT Have Their Own Disk A common misunderstanding is that Docker containers have their own disk. In reality: Containers do not have a separate physical filesystem. Docker creates a filesystem view using layers stored on the host machine. This layered filesystem is implemented using a Union Filesystem , most commonly OverlayFS on Linux. Docker Images Are Read-Only Layers A Docker image is made up of multiple read-only layers. Each instruction in a Dockerfile creates a new layer. FROM python:3.11 RUN pip install flask COPY app.py . This results in layers lik...

🐳 Docker Tutorial for Beginners: Step-by-Step with a Simple Example

Docker Explained Using a Very Simple App (Beginner Friendly) Goal: Build a tiny Python app, run it normally, then run the same app using Docker, and understand why Docker helps. Step 1: Create a Very Small Python App Create a file named app.py : print("Hello I am running inside Docker!") Step 2: Run the App WITHOUT Docker Run this on your machine: python app.py Common real-life problems: Python not installed, wrong Python version, missing dependencies, different OS behavior this is where the “works on my machine” issue starts. Step 3: Introduce Docker Instead of relying on your system, Docker lets you package the runtime (Python) together with your app. We’ll do that using a Dockerfile . Step 4: Create a Dockerfile Create a file named Dockerfile (no extension): FROM python:3.11 WORKDIR /app COPY app.py . CMD ["py...