
Tóm tắt nhanh
- Kubernetes tự động deploy, scale và quản lý containerized applications
- Control Plane điều phối cluster, Worker Nodes chạy containers
- Pod là đơn vị nhỏ nhất, Deployment quản lý replicas
- Service exposing applications, ConfigMaps lưu cấu hình
- Minikube cho local development, kubectl để interact với cluster
Kubernetes là gì?
Kubernetes (thường gọi tắt là K8s) là một nền tảng mã nguồn mở để tự động hóa việc deploy, scale và quản lý các ứng dụng containerized. Nói đơn giản, Kubernetes giúp bạn quản lý nhiều containers một cách dễ dàng, đảm bảo ứng dụng luôn available và có thể scale theo nhu cầu [2].
Bạn có đang gặp tình trạng phải manually restart servers khi có lỗi? Hoặc không biết làm sao để handle khi traffic tăng đột ngột? Kubernetes chính là giải pháp cho những vấn đề này!
Trong năm 2026, Kubernetes v1.35 đã có nhiều cải tiến về performance và ease of use [2]. Cùng tìm hiểu cách sử dụng Kubernetes từ cơ bản nhé!

Kiến trúc Kubernetes
Kubernetes cluster bao gồm Control Plane (Master Node) và Worker Nodes. Control Plane điều phối hoạt động, Worker Nodes chạy thực các containers.
Hãy tưởng tượng Control Plane như “bộ não” của cả hệ thống, còn Worker Nodes như “công nhân” thực sự chạy công việc [5].
Control Plane (Master Node)
Control Plane chịu trách nhiệm quản lý cluster, bao gồm:
- etcd: Database lưu trữ toàn bộ cluster state
- kube-apiserver: API endpoint để interact với cluster
- kube-controller-manager: Quản lý các controllers
- kube-scheduler: Quyết định Pod nào chạy ở đâu
Worker Nodes
Mỗi Worker Node chạy:
- kubelet: Agent giao tiếp với Control Plane
- kube-proxy: Quản lý network routing
- Container Runtime: Docker, containerd, hoặc CRI-O
Điều thú vị là bạn có thể có nhiều Worker Nodes, và Kubernetes sẽ tự động phân phối workload giữa chúng! Đây là cách đạt được high availability.

Các khái niệm cơ bản trong Kubernetes
Để hiểu Kubernetes, bạn cần nắm vững các khái niệm cốt lõi từ Pod đến Deployment.
Pod
Pod là đơn vị nhỏ nhất trong Kubernetes, đại diện cho một hoặc nhiều containers chạy cùng nhau.
Thông thường, mỗi Pod chạy một container duy nhất. Nhưng bạn cũng có thể chạy nhiều containers phụ trợ trong cùng Pod khi chúng cần share resources chặt chẽ.
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: web
image: nginx:alpine
ports:
- containerPort: 80
Deployment
Deployment cho phép bạn declarative quản lý Pods, bao gồm scaling, rolling updates, và self-healing.
Thay vì tạo Pod trực tiếp, bạn nên luôn luôn dùng Deployment. Điều này đảm bảo applications luôn running với số lượng replicas mong muốn.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: web
image: nginx:alpine
Thú vị nhỉ! Chỉ với vài dòng config, bạn đã có 3 replicas của ứng dụng chạy và tự động self-healing!
Service
Service expose một tập hợp Pods như một network service, cho phép các Pods khác hoặc external traffic truy cập.
Có 4 loại Service:
- ClusterIP: Chỉ accessible trong cluster (default)
- NodePort: Expose trên mỗi Node’s IP
- LoadBalancer: Dùng external load balancer
- ExternalName: Map đến external DNS
ConfigMap và Secret
ConfigMap lưu configuration data, Secret lưu sensitive data như passwords, API keys.
Cách này giúp tách biệt configuration khỏi application code, making it easier to manage và migrate.

Cài đặt Kubernetes cho Development
Cách dễ nhất để chạy Kubernetes locally là sử dụng Minikube — một tool cho phép bạn chạy single-node Kubernetes cluster trên máy local [10].
Cài đặt Minikube
Trên macOS:
# Cài đặt Homebrew nếu chưa có /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Cài đặt Minikube brew install minikube # Cài đặt kubectl brew install kubectl
Trên Linux:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
Khởi động Cluster
# Khởi tạo cluster minikube start # Kiểm tra cluster status kubectl cluster-info # Xem nodes kubectl get nodes
Mình khuyên bạn nên dùng Docker driver cho Mac và Linux, nó nhẹ và nhanh hơn nhiều so với VirtualBox!
Tạo Deployment đầu tiên
Bây giờ chúng ta sẽ deploy ứng dụng đầu tiên lên Kubernetes sử dụng kubectl — command line tool để interact với cluster.
Đầu tiên, hãy tạo một Deployment:
# Tạo deployment với nginx kubectl create deployment nginx --image=nginx:alpine # Xem deployment kubectl get deployments # Xem pods kubectl get pods
Sau vài giây, bạn sẽ thấy Pod của nginx đang chạy! Kubernetes đã tự động pull image và start container.
Để xem logs:
kubectl logs -l app=nginx
Để access vào container:
kubectl exec -it nginx-xxxxx -- /bin/sh
Thật dễ dàng phải không? Bạn đã có ứng dụng đầu tiên chạy trên Kubernetes!

Expose Service ra ngoài
Để truy cập ứng dụng từ bên ngoài cluster, bạn cần tạo một Service.
Với Minikube, bạn có thể dùng NodePort để expose service:
# Expose nginx service kubectl expose deployment nginx --type=NodePort --port=80 # Xem service kubectl get services # Truy cập qua Minikube minikube service nginx
Hoặc nếu bạn dùng Docker Desktop’s Kubernetes, có thể dùng LoadBalancer:
kubectl expose deployment nginx --type=LoadBalancer --port=80
Sau khi expose, bạn có thể truy cập ứng dụng qua browser! Đây là bước quan trọng để testing trước khi deploy lên production.
Một tip nhỏ: trong development, bạn có thể dùng kubectl port-forward để forward traffic từ local machine đến pod:
kubectl port-forward nginx-xxxxx 8080:80
Sau đó truy cập http://localhost:8080 trên browser!
Scale ứng dụng
Một trong những điểm mạnh nhất của Kubernetes là khả năng scale ứng dụng dễ dàng.
Scale up deployment:
# Scale lên 5 replicas kubectl scale deployment nginx --replicas=5 # Kiểm tra kubectl get pods -l app=nginx
Kubernetes sẽ tự động schedule các Pods mới vào các Nodes available. Bạn sẽ thấy Pod count tăng lên ngay lập tức!
Scale down:
# Scale xuống 2 replicas kubectl scale deployment nginx --replicas=2
Điều tuyệt vời là Kubernetes còn hỗ trợ Horizontal Pod Autoscaler (HPA) để tự động scale dựa trên CPU usage hoặc custom metrics:
kubectl autoscale deployment nginx --min=2 --max=10 --cpu-percent=80
Với HPA, Kubernetes sẽ tự động scale up khi CPU > 80%, và scale down khi traffic giảm. Thật tiện lợi!

Update ứng dụng với Rolling Updates
Kubernetes hỗ trợ Rolling Updates — cho phép update ứng dụng không downtime.
Update image:
# Update nginx lên phiên bản mới kubectl set image deployment/nginx nginx=nginx:1.25 # Xem trạng thái update kubectl rollout status deployment/nginx
Kubernetes sẽ:
- Tạo Pod mới với image mới
- Chờ Pod mới ready
- Xóa Pod cũ
- Lặp lại cho đến khi tất cả Pods đều updated
Điều này đảm bảo ứng dụng luôn available trong suốt quá trình update!
Rollback nếu có lỗi:
# Xem history kubectl rollout history deployment/nginx # Rollback về version trước kubectl rollout undo deployment/nginx # Rollback về version cụ thể kubectl rollout undo deployment/nginx --to-revision=2
Đây là tính năng mà mình đặc biệt thích — bạn có thể rollback ngay lập tức nếu update có vấn đề!
Kubernetes v1.35 và những cập nhật 2026
Kubernetes v1.35 mang đến nhiều cải tiến về performance, security và usability [2].
Những features mới trong 2026
- Improved Gateway API: Gateway API đã stable và thay thế Ingress trong nhiều use cases [4]
- Better Windows support: Hỗ trợ tốt hơn cho Windows containers trong production
- Enhanced security: Cải tiến về Pod Security Standards và RuntimeClass
- Simplified cluster management: Công cụ quản lý cluster trở nên dễ hơn
- Better resource management: Cải tiến về resource quota và limit ranges
Nếu bạn đang dùng version cũ, đây là thời điểm tốt để upgrade!
Nên học gì tiếp?
Sau khi nắm vững kiến thức cơ bản, bạn có thể explore thêm:
- Helm: Package manager cho Kubernetes
- Service Mesh: Istio, Linkerd cho traffic management
- GitOps: ArgoCD, Flux cho declarative deployments
- Monitoring: Prometheus, Grafana cho observability
Đừng quên tham khảo Kubernetes Fundamentals và official tutorials để practice thêm!
Kết luận
Kubernetes là công cụ mạnh mẽ cho container orchestration, giúp bạn deploy, scale và quản lý applications một cách hiệu quả. Trong bài viết này, bạn đã học được:
- Kubernetes là gì và tại sao nó quan trọng
- Kiến trúc cơ bản của Kubernetes cluster
- Các khái niệm: Pod, Deployment, Service, ConfigMap
- Cách deploy ứng dụng đầu tiên
- Cách scale và update applications
Bạn đã sẵn sàng để bắt đầu với Kubernetes? Hãy thử deploy ứng dụng của bạn và chia sẻ kinh nghiệm nhé!
Nguồn tham khảo
- Kubernetes Tutorial for Beginners 2026 | KodeKloud
- Kubernetes 2026 Complete Guide: v1.35
- Top 28 Kubernetes resources for 2026
- How to Learn Kubernetes in 2026
- Kubernetes for Absolute Beginners: Deploy Your First App in 2026
- Kubernetes Tutorial For Beginners
- Kubernetes Kickstart 2026
- Getting started | Kubernetes
- How To Get Started With Kubernetes: A Practical Guide
- Learn Kubernetes Basics
Các câu hỏi thường gặp
Kubernetes khác gì với Docker Compose?
Docker Compose phù hợp cho development và small deployments với single host. Kubernetes dành cho production-scale với multiple nodes, high availability, và advanced orchestration features như auto-scaling, service mesh, và complex deployments.
Tôi cần bao nhiêu RAM để chạy Minikube?
Minikube yêu cầu tối thiểu 2GB RAM, nhưng mình khuyên nên có 4GB+ để chạy mượt mà và có thể test với nhiều pods cùng lúc.
Làm sao để debug khi Pod không chạy?
Dùng kubectl describe pod [pod-name] để xem chi tiết trạng thái. kubectl logs [pod-name] để xem logs. kubectl exec -it [pod-name] -- /bin/sh để access vào container và debug trực tiếp.
Kubernetes có miễn phí không?
Kubernetes là open-source, hoàn toàn miễn phí. Bạn có thể tự host hoặc dùng managed services như GKE (Google), EKS (AWS), AKS (Azure) — các managed services có phí cho infrastructure.
Khi nào nên dùng Pod thay vì Deployment?
Trong hầu hết trường hợp, bạn nên dùng Deployment thay vì tạo Pod trực tiếp. Deployment cung cấp self-healing, scaling, và rolling updates. Chỉ tạo Pod trực tiếp cho testing hoặc debug.