Kubernetes (thường gọi tắt là K8s) đang trở thành tiêu chuẩn vàng trong ngành DevOps và hạ tầng đám mây. Theo khảo sát của CNCF năm 2023, hơn 96% tổ chức đang sử dụng hoặc đánh giá Kubernetes để quản lý container. Tuy nhiên, việc cài đặt và cấu hình Kubernetes lần đầu vẫn là rào cản lớn với nhiều người. Bài viết này LANIT sẽ hướng dẫn cài đặt Kubernetes từ khâu chuẩn bị hạ tầng đến khi cluster hoạt động hoàn chỉnh.
Có những cách nào để cài đặt Kubernetes?
Trước khi bắt tay thực hành, bạn cần hiểu có ba hướng triển khai Kubernetes phổ biến, mỗi hướng phù hợp với một mục đích khác nhau.
1. Môi trường Local/Thử nghiệm (Minikube / Kind)
Đây là lựa chọn lý tưởng nếu bạn muốn học Kubernetes ngay trên laptop mà không cần máy chủ thật. Minikube và Kind đều tạo ra một cluster một node duy nhất đóng vai trò cả Master lẫn Worker
- Ưu điểm: cài đặt trong vài phút, hoàn toàn miễn phí.
- Nhược điểm: không phản ánh đúng môi trường production thực tế, hiệu năng bị giới hạn bởi máy tính cá nhân.

2. Môi trường Thực tế (Kubeadm)
Đây là trọng tâm của bài viết này. Kubeadm là công cụ chuẩn mực công nghiệp để tự dựng (Bare-metal) một Kubernetes cluster hoàn chỉnh trên các máy chủ ảo độc lập. Phương pháp này cho phép bạn kiểm soát hoàn toàn cấu hình và hiểu sâu cơ chế hoạt động bên trong.

3. Sử dụng Managed K8s (EKS, GKE, VKE)
Nếu bạn không muốn tự quản lý hạ tầng, các nền tảng cloud lớn cung cấp dịch vụ Kubernetes được quản lý sẵn: Amazon EKS, Google GKE, hay VKE. Control Plane được nhà cung cấp lo hoàn toàn, bạn chỉ cần quản lý workload.
Phù hợp với đội ngũ production cần độ tin cậy cao và muốn giảm tải vận hành, nhưng chi phí cao hơn tự dựng.
Chuẩn bị tài nguyên (Prerequisites) trước khi cài đặt
Đây là bước nhiều người bỏ qua và dẫn đến cài đặt thất bại. Hãy chuẩn bị kỹ trước khi bắt đầu.
Yêu cầu về máy chủ
Bạn cần tối thiểu 2 máy chủ ảo (VPS) hoạt động độc lập:
| Node | Vai trò | Cấu hình tối thiểu |
| Master Node | Điều phối toàn bộ cluster | 2 vCPU, 2GB RAM |
| Worker Node | Chạy ứng dụng thực tế | 2 vCPU, 2GB RAM |
Hệ điều hành khuyến nghị: Ubuntu 22.04 LTS hoặc 24.04 LTS.
Để triển khai lab nhanh với chi phí thấp, bạn có thể sử dụng Cloud Server từ các nhà cung cấp quốc tế như Vultr. Nếu hệ thống hướng đến người dùng nội địa Việt Nam và yêu cầu độ trễ (Latency) cực thấp, hãy ưu tiên nhà cung cấp có Data Center trong nước như LANIT để không ảnh hưởng trực tiếp đến tốc độ phản hồi của API server trong cluster.
>>> Đọc thêm: Những việc cần làm sau khi cài Ubuntu

Yêu cầu về mạng & bảo mật
Hai máy chủ phải giao tiếp được với nhau qua IP Private. Ngoài ra, bạn cần mở các cổng bắt buộc sau trên tường lửa:
| Cổng | Giao thức | Mục đích |
| 6443 | TCP | Kubernetes API Server |
| 2379–2380 | TCP | etcd (cơ sở dữ liệu trạng thái cluster) |
| 10250 | TCP | Kubelet API |
| 10251–10252 | TCP | Scheduler và Controller Manager |
Nếu dự định đưa hệ thống ra môi trường production, hãy cân nhắc bật tính năng Firewall và Anti-DDoS ở lớp mạng từ nhà cung cấp hosting, đây là lớp bảo vệ đầu tiên trước khi Traffic đến Cluster.

Hướng dẫn các bước cài đặt Kubernetes chi tiết (Step-by-step)
Toàn bộ phần này sử dụng lệnh Linux. Bạn cần chạy với quyền root hoặc dùng sudo trước mỗi lệnh.
Bước 1: Thiết lập môi trường cơ bản (Chạy trên tất cả các Node)
- Cập nhật hệ điều hành:
sudo apt update && sudo apt upgrade -y- Tắt Swap — bước bắt buộc với Kubernetes:
Kubernetes yêu cầu tắt Swap hoàn toàn. Nếu Swap còn bật, quá trình kubeadm init sẽ báo lỗi và dừng lại. Lý do: Kubernetes tự quản lý bộ nhớ cho container, việc hệ điều hành tự dùng Swap sẽ gây ra hành vi không thể dự đoán.
# Tắt swap ngay lập tức
sudo swapoff -a
# Tắt vĩnh viễn bằng cách comment dòng swap trong fstab
sudo sed -i '/ swap / s/^/#/' /etc/fstabKiểm tra xem swap đã tắt chưa:
free -hNếu cột Swap hiển thị 0B, bạn đã thành công.

Bước 2: Cài đặt Container Runtime (containerd)
Kubernetes không chạy container trực tiếp, nó cần một Container Runtime làm tầng trung gian. containerd là lựa chọn mặc định và được khuyến nghị bởi chính dự án Kubernetes kể từ phiên bản 1.24+.
Tải các kernel module cần thiết:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilterCấu hình tham số mạng cho kernel:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --systemCài đặt containerd:
sudo apt install -y containerd
# Tạo file cấu hình mặc định
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# Chỉnh SystemdCgroup = true (bắt buộc)
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
# Khởi động dịch vụ
sudo systemctl restart containerd
sudo systemctl enable containerd
Bước 3: Cài đặt Kubeadm, Kubelet và Kubectl (Chạy trên tất cả các Node)
Ba công cụ này tạo nên xương sống của mọi Kubernetes cluster:
- kubeadm: Khởi tạo và quản lý cluster.
- kubelet: Agent chạy trên mỗi node, nhận lệnh từ Master và quản lý container.
- kubectl: CLI để bạn tương tác với cluster (tương tự như terminal điều khiển từ xa).
Thêm repository chính thức của Kubernetes:
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | \
sudo tee /etc/apt/sources.list.d/kubernetes.listCài đặt và khóa phiên bản:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
# Khóa phiên bản để tránh tự động nâng cấp gây xung đột
sudo apt-mark hold kubelet kubeadm kubectl
Bước 4: Khởi tạo Master Node (Chỉ chạy trên máy chủ Master)
Đây là bước “khai sinh” ra cluster của bạn.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16Tham số –pod-network-cidr xác định dải địa chỉ IP nội bộ cho các Pod. Giá trị 192.168.0.0/16 là chuẩn dùng cho Calico (plugin mạng sẽ cài ở bước tiếp theo).
Sau khi lệnh chạy xong (khoảng 2–5 phút), bạn sẽ thấy đầu ra tương tự:
Your Kubernetes control-plane has initialized successfully!
...
kubeadm join 10.0.0.1:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:...Quan trọng: Hãy sao chép và lưu lại đoạn lệnh kubeadm join ngay bây giờ. Đây là “chìa khóa” để các Worker Node gia nhập cluster. Nếu mất, bạn sẽ cần tạo lại token.
Cấu hình kubectl cho user hiện tại:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Bước 5: Cấu hình mạng cho Pod (Pod Network Add-on)
Kubernetes không tự đi kèm hệ thống mạng nội bộ. Bạn cần cài thêm một Network Plugin để các Pod trên các node khác nhau có thể liên lạc với nhau.
Calico là lựa chọn phổ biến nhất — được dùng bởi hơn 50% các cluster Kubernetes tự vận hành theo khảo sát CNCF. Calico hỗ trợ Network Policy, cung cấp khả năng kiểm soát traffic giữa các Pod chi tiết.
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yamlChờ khoảng 1–2 phút, sau đó kiểm tra:
kubectl get pods -n kube-systemTất cả các pod có tên bắt đầu bằng calico- phải ở trạng thái Running.

Bước 6: Kết nối Worker Node vào Cluster (Join Node)
Trên máy chủ Worker, chạy đúng đoạn lệnh kubeadm join bạn đã lưu ở Bước 4:
sudo kubeadm join 10.0.0.1:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxx...Quay lại máy chủ Master và kiểm tra:
kubectl get nodesKết quả mong đợi:
NAME STATUS ROLES AGE VERSION
master-node Ready control-plane 10m v1.29.0
worker-node Ready <none> 2m v1.29.0Khi cả hai node đều hiển thị STATUS: Ready, cluster của bạn đã sẵn sàng hoạt động!

Kiểm tra trạng thái Cluster và tối ưu hệ thống
Để xác thực toàn bộ Cluster đã hoạt động đúng, bạn thực hiện lệnh sau trên Master Node:
# Xem trạng thái tất cả node
kubectl get nodes -o wide
# Xem tất cả pod hệ thống
kubectl get pods --all-namespaces
# Kiểm tra thông tin cluster
kubectl cluster-info- Kết quả mong đợi: Tất cả các node phải hiển thị trạng thái Ready.
- Nếu có lỗi: Kiểm tra log của kubelet trên các node gặp sự cố để xác định nguyên nhân mất kết nối hoặc lỗi dịch vụ.
Chiến lược bảo trì: Sao lưu cấu hình etcd
Cơ sở dữ liệu etcd lưu trữ toàn bộ trạng thái của Cluster. Nếu etcd gặp sự cố, toàn bộ hệ thống sẽ mất khả năng quản lý. Vì vậy, việc thiết lập sao lưu etcd có tầm quan trọng tương đương với việc backup SQL Server trong các ứng dụng web truyền thống.
Hướng dẫn sơ bộ:
- Thiết lập tác vụ tự động: Sử dụng lệnh etcdctl snapshot save kết hợp với CronJob trên Linux để sao lưu định kỳ ra file ngoài (tránh lưu file backup trên chính node master).
- Lưu trữ an toàn: Đẩy các bản sao lưu này lên các dịch vụ lưu trữ đám mây (như S3 Storage, Google Cloud Storage) hoặc server lưu trữ tách biệt.
- Quy trình khôi phục: Luôn định kỳ kiểm tra khả năng phục hồi dữ liệu từ file backup để đảm bảo các bản sao lưu luôn ở trạng thái “sẵn sàng sử dụng” khi xảy ra thảm họa.
Lệnh tạo snapshot etcd thủ công:
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot-$(date +%Y%m%d).db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.keyKhuyến nghị: tạo cronjob chạy lệnh này mỗi ngày và lưu snapshot ra storage ngoài cluster.

Ứng dụng thực tế: Triển khai một dự án lên K8s
Sau khi cluster đã hoạt động, hãy thử triển khai một ứng dụng thực tế để xác nhận mọi thứ đang chạy đúng.
- Tạo một Nginx Deployment:
kubectl create deployment nginx-demo --image=nginx --replicas=2- Expose ra ngoài qua NodePort:
kubectl expose deployment nginx-demo --type=NodePort --port=80- Kiểm tra:
kubectl get service nginx-demoTruy cập vào địa chỉ http://<IP-Worker-Node>:<NodePort> — bạn sẽ thấy trang chào mừng của Nginx.
Đây chính là workflow cơ bản của Kubernetes: Deployment quản lý vòng đời container, Service lo phần networking và expose ứng dụng ra ngoài.
Sau khi hoàn tất hướng dẫn cài đặt Kubernetes này, bạn đang sở hữu một hạ tầng container orchestration thực sự. Từ đây, bạn có thể:
- Triển khai và quản lý ứng dụng microservices ở quy mô lớn.
- Tích hợp CI/CD pipeline (ArgoCD, Jenkins) để tự động hóa toàn bộ quy trình deploy.
- Chạy các dự án AI Automation độc lập — ví dụ như các hệ thống tích hợp với Discord hoặc Telegram — mà không lo tình trạng sập do quá tải tài nguyên, vì Kubernetes sẽ tự động cân bằng tải và khởi động lại khi cần.
- Mở rộng lên multi-node cluster chỉ bằng cách thêm Worker Node và chạy lại lệnh kubeadm join.

Cài đặt Kubernetes không quá khó như bạn tưởng nếu thực hiện đúng từng bước. Bây giờ, hãy thử triển khai ứng dụng đầu tiên của bạn lên cụm vừa thiết lập để kiểm chứng khả năng tự hồi phục (self-healing) và mở rộng của nó. Nếu gặp khó khăn trong quá trình vận hành, đừng ngần ngại quay lại tài liệu chính thức của cộng đồng. Chúc bạn có những trải nghiệm tuyệt vời với “người quản gia” đầy quyền năng này!














