🎓 Architecture Deep-Dive

The Architectural Concepts
Behind Kubernetes

Khám phá từng thành phần cấu thành nên một Cụm Kubernetes Bare-Metal thực chiến. Click vào các thẻ kỹ thuật để xem giải thích chi tiết và sơ đồ minh họa.

Bắt đầu khám phá → Xem CI/CD Flow
📖 Nền tảng

Kubernetes là gì?

Kubernetes (K8s) là nền tảng mã nguồn mở dùng để tự động hóa triển khai, mở rộng và quản lý các ứng dụng container hóa. Ra đời từ Google năm 2014, nay do CNCF duy trì.

🎯

Vấn đề K8s giải quyết

Khi bạn có hàng trăm container chạy đồng thời, bạn cần một "người điều phối" biết khi nào khởi động lại container, phân bổ tài nguyên, định tuyến traffic và tự phục hồi khi có sự cố.

Orchestration Self-Healing Auto-Scaling
🏗️

Cấu trúc phân tầng

K8s chia hạ tầng thành 2 tầng rõ ràng: Control Plane (Bộ não ra lệnh) và Worker Nodes (Nhà máy thực thi). Mọi giao tiếp đều đi qua tầng API Server.

Control Plane Data Plane
📦

Đơn vị triển khai: Pod

Pod là đơn vị nhỏ nhất trong K8s — một lớp vỏ bọc chứa một hoặc nhiều Container dùng chung mạng và bộ nhớ. K8s không triển khai Container trực tiếp mà luôn thông qua Pod.

Pod Deployment ReplicaSet
🧠 Control Plane

Bộ não của Cluster

Control Plane là hệ thần kinh trung ương nhận quyết định, duy trì trạng thái mong muốn và điều phối toàn bộ Cluster. Nó KHÔNG chạy workload của người dùng.

🚪

API Server

Cổng vào duy nhất (Single Entry Point) của toàn bộ Cluster. Mọi lệnh — từ kubectl, từ Argo CD, từ các node Worker — đều phải thông qua API Server để được xác thực và phân phối.

kube-apiserver REST API RBAC / Auth
🗄️

etcd

Cơ sở dữ liệu phân tán (Key-Value Store) lưu trữ toàn bộ trạng thái của Cluster. Nếu mọi node đều sập mà etcd còn sống, Cluster vẫn có thể phục hồi hoàn toàn.

etcd Raft Consensus Backup & Restore
📅

Scheduler

Thuật toán thông minh xem xét tài nguyên (CPU/RAM), ràng buộc (Affinity/Taint) và quyết định Worker Node nào phù hợp nhất để "đặt" một Pod mới vào.

kube-scheduler Node Affinity Taint & Toleration
🔄

Controller Manager

Tập hợp các vòng lặp điều khiển (Control Loop) liên tục so sánh "trạng thái hiện tại" với "trạng thái mong muốn" trong etcd và ra lệnh cho API Server điều chỉnh để khớp.

Control Loop Desired State Reconciliation
☁️

Cloud Controller Manager

Cầu nối giữa K8s và API của nhà cung cấp đám mây (AWS, GCP...). Trong Bare-Metal Lab này, vai trò của nó được thay thế bởi MetalLB và Traefik Ingress.

MetalLB LoadBalancer Svc
⚙️ Worker Nodes

Nhà máy thực thi

Worker Nodes là nơi các Pod (Container thực tế) hoạt động. Mỗi Node có 3 thành phần chính của K8s cùng phối hợp để nhận lệnh và vận hành container.

🤝

Kubelet

Đại lý (Agent) được cài trên mỗi Worker Node. Kubelet liên tục nhận PodSpec từ API Server và ra lệnh cho Container Runtime khởi chạy, dừng hoặc kiểm tra sức khỏe Container.

kubelet PodSpec Health Probe
🐋

Container Runtime

Engine thực sự kéo Image từ Registry và chạy Container. K8s không tự chạy Container mà ủy quyền cho CRI-compliant Runtime. Lab này dùng containerd (Nhẹ hơn Docker).

containerd CRI Interface Image Pull
🔀

Kube-Proxy

Thành phần quản lý luật định tuyến mạng (iptables/IPVS) trên mỗi Node, đảm bảo traffic đến một Service được cân bằng tải và phân phối đều đến các Pod phía sau.

kube-proxy iptables Service VIP
🕸️ Networking

Huyết mạch của Cluster

Mạng K8s tuân theo mô hình "Flat Network" — mọi Pod đều có thể nói chuyện với mọi Pod khác mà không cần NAT. CNI plugin là người thực thi quy tắc đó.

Cilium & eBPF

CNI Plugin thế hệ mới dùng công nghệ eBPF (Extended Berkeley Packet Filter) để xử lý packet thẳng trong Kernel Linux — nhanh hơn iptables 3-5 lần, không cần kprobe.

Cilium eBPF Hubble Observer NetworkPolicy
🌐

Service & DNS

Service là lớp trừu tượng đứng trước một nhóm Pod, cấp một địa chỉ IP ảo (VIP) ổn định vì Pod có thể chết và sinh tư do. CoreDNS giải quyết tên dịch vụ thành VIP.

ClusterIP NodePort CoreDNS
🚦

Ingress Controller

Cổng điều phối HTTP/HTTPS từ ngoài Internet. Lab này dùng Traefik — lắng nghe trên cổng 80/443 tại IP MetalLB, điều hướng traffic theo tên miền đến đúng Service.

Traefik Ingress Rule TLS / HTTPS
🚀 CI/CD GitOps

Luồng Zero-Touch Deployment

Từ khi lập trình viên bấm Push Code cho đến khi ứng dụng ra mắt bản mới trên Internet — không cần một thao tác tay nào vào server.

👨‍💻
Dev Push Code
git push → GitLab
🔧
GitLab CI + Kaniko
Build Docker Image
📦
Registry .82
Lưu Image v{N}
🤖
CI Bot (sed + git)
Cập nhật gitops-mainfests
🐙
Argo CD Sync
Phát hiện Out-of-Sync
☸️
K8s Deploy
Rolling Update Pods
🌐
Traefik Ingress
web.kietpt-k8s-lab.org