NỘI DUNG

Banner blog lễ 30.4 và 1.5

Cách cài đặt Kubernetes trên Ubuntu: Hướng dẫn chi tiết từ A đến Z

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:08/05/2025
Lượt xem

Đánh giá

Cài đặt Kubernetes trên Ubuntu là bước quan trọng để triển khai hệ thống container tự động, linh hoạt và dễ mở rộng. Bài viết này sẽ hướng dẫn bạn cách thiết lập Kubernetes từ đầu trên Ubuntu, bao gồm cả việc chuẩn bị môi trường, cài Docker, cấu hình mạng và kết nối các node. Với 8 bước chi tiết, bạn sẽ nắm được quy trình tạo cluster Kubernetes hoạt động ổn định. Bài viết còn cung cấp giải pháp hạ tầng tối ưu để bạn triển khai nhanh chóng, hiệu quả.

Điểm chính cần nắm

  • Yêu cầu cần chuẩn bị trước khi cài Kubernetes: Liệt kê các yêu cầu về hệ thống và phần mềm cần thiết trước khi triển khai Kubernetes.
  • 8 bước cài đặt Kubernetes trên Ubuntu: Hướng dẫn chi tiết từng bước để cài đặt và cấu hình Kubernetes trên Ubuntu.
  • Vietnix – Giải pháp VPS hiệu suất cao, tối ưu cho mọi nhu cầu: Giới thiệu giải pháp hạ tầng VPS chất lượng cao từ Vietnix, phù hợp để triển khai Kubernetes.
  • FAQ: Giải đáp các câu hỏi thường gặp liên quan đến quá trình cài đặt và vận hành Kubernetes trên Ubuntu.

Yêu cầu cần chuẩn bị trước khi cài Kubernetes

  • Số lượng máy và vai trò: Tối thiểu 2 máy (1 master để điều phối cluster, 1 hoặc nhiều worker để chạy container).
  • Hệ điều hành hỗ trợ: Ubuntu 20.04 hoặc 22.04, cần quyền sudo hoặc root để cài đặt.
  • Cấu hình phần cứng đề xuất:
    • Master: CPU ≥ 2 core, RAM ≥ 2GB, Disk ≥ 20GB
    • Worker: CPU ≥ 2 core, RAM ≥ 2GB, Disk ≥ 20GB
      → Đáp ứng yêu cầu tối thiểu cho kubelet, container runtime và các pod hệ thống.
  • Kết nối mạng: Các máy phải ping được nhau qua IP/hostname, mở port 6443, 10250 và 30000–32767 nếu dùng NodePort.
  • Cài đặt thời gian chính xác: Cài ntp hoặc chrony để tránh lỗi xác thực TLS do lệch thời gian.
  • Tắt swap:
sudo swapoff -a  
sudo sed -i '/ swap / s/^/#/' /etc/fstab
# → Kubelet yêu cầu hệ thống không bật swap để quản lý tài nguyên chính xác.
  • Cài đặt container runtime: Dùng Docker hoặc containerd để Kubernetes có thể chạy pod.
  • Truy cập Internet: Để tải kubeadm, kubelet, kubectl và plugin mạng từ repo chính thức.
Yêu cầu cần chuẩn bị trước khi cài Kubernetes
Yêu cầu cần chuẩn bị trước khi cài Kubernetes (Nguồn: Internet)

Bước 1: Cài Docker cho tất cả các node

Kubernetes cần một trình chạy container tuân thủ chuẩn CRI như Docker hoặc containerd. Trong bài này, mình sẽ dùng Docker vì phổ biến và dễ tiếp cận.

  • Thực hiện trên tất cả các node
sudo apt update # Cập nhật danh sách gói
sudo apt install docker.io -y # Lệnh cài đặt Docker
sudo systemctl enable docker # Thiết lập Docker khởi chạy khi khởi động
sudo systemctl start docker # Kiểm tra Docker đang chạy
Thực hiện trên tất cả các node
Thực hiện trên tất cả các node (Nguồn: Internet)
  • Kiểm tra Docker đã chạy chưa
sudo systemctl status docker # Xem trạng thái Docker, đảm bảo không bị lỗi
Kiểm tra Docker đã chạy chưa
Kiểm tra Docker đã chạy chưa (Nguồn: Internet)

Bước 2: Cài đặt Kubernetes tools (kubeadm, kubelet, kubectl)

Mỗi node trong cụm Kubernetes cần ba thành phần:

  • kubeadm: Dùng để khởi tạo và tham gia cluster.
  • kubelet: Quản lý pod và container trên từng node.
  • kubectl: Công cụ dòng lệnh để tương tác với cluster.

Trước tiên, trên tất cả các node, bạn thêm khóa ký và repo chính thức:

sudo mkdir -p /etc/apt/keyrings # Tạo thư mục lưu khóa nếu chưa có
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg # Thêm khóa xác thực

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list # Thêm repo Kubernetes chính thức

sudo apt update # Cập nhật danh sách gói mới từ repo vừa thêm

Sau đó, cài các công cụ Kubernetes:

sudo apt install kubeadm kubelet kubectl -y # Cài 3 công cụ chính của Kubernetes
Cài đặt Kubernetes tools
Cài đặt Kubernetes tools (Nguồn: Internet)
sudo apt-mark hold kubeadm kubelet kubectl # Giữ phiên bản để tránh tự động nâng cấp gây lỗi
Giữ phiên bản để tránh tự động nâng cấp gây lỗi
Giữ phiên bản để tránh tự động nâng cấp gây lỗi (Nguồn: Internet)

Bước 3: Cấu hình hệ thống sẵn sàng cho Kubernetes

Kubernetes yêu cầu hệ thống sẵn sàng: tắt swap, bật các module mạng cần thiết.

  • Tắt swap trên tất cả các node: Kubernetes yêu cầu swap phải tắt để hoạt động ổn định.
sudo swapoff -a # Tắt swap tạm thời
sudo sed -i '/ swap / s/^/#/' /etc/fstab # Vô hiệu hóa swap vĩnh viễn sau khi reboot
  • Bật các kernel module cần thiết
echo -e "overlay\nbr_netfilter" | sudo tee /etc/modules-load.d/containerd.conf # Khai báo module cần load khi khởi động
sudo modprobe overlay # Load module overlay ngay
sudo modprobe br_netfilter # Load module cho xử lý bridge network
Bật các kernel module cần thiết
Bật các kernel module cần thiết (Nguồn: Internet)
  • Cấu hình sysctl cho mạng Kubernetes
cat <<EOF | sudo tee /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
Cấu hình sysctl cho mạng Kubernetes
Cấu hình sysctl cho mạng Kubernetes (Nguồn: Internet)
sudo sysctl --system # Áp dụng ngay các thiết lập kernel
Áp dụng ngay các thiết lập kernel
Áp dụng ngay các thiết lập kernel (Nguồn: Internet)

Bước 4: Đặt hostname và cập nhật file hosts

  • Trên máy master
sudo hostnamectl set-hostname master-node
  • Trên worker node
sudo hostnamectl set-hostname worker01 # Đặt tên theo ý bạn, ví dụ worker01, worker02...
  • Trên tất cả các node, cập nhật file /etc/hosts để các node nhận diện lẫn nhau qua hostname
sudo nano /etc/hosts

Thêm ví dụ:

192.168.1.100 master-node
192.168.1.101 worker01

Đặt hostname và cập nhật file hosts
Đặt hostname và cập nhật file hosts (Nguồn: Internet)

Bước 5: Khởi tạo master node với kubeadm

  • Cấu hình thêm cho kubelet và Docker
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs"' | sudo tee /etc/default/kubelet
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart kubelet

Cấu hình Docker với cgroup driver systemd

sudo nano /etc/docker/daemon.json

Thêm nội dung

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
Thêm nội dung
Thêm nội dung (Nguồn: Internet)

Tải lại cấu hình và khởi động lại Docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Bỏ lỗi nếu swap chưa tắt hoàn toàn

sudo mkdir -p /etc/systemd/system/kubelet.service.d
sudo nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Thêm dòng sau vào file

Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
sudo systemctl daemon-reload
sudo systemctl restart kubelet
Thêm dòng sau vào file
Thêm dòng sau vào file (Nguồn: Internet)
  • Khởi tạo cụm Kubernetes từ master node
sudo kubeadm init --control-plane-endpoint=master-node --upload-certs

Cuối quá trình sẽ có lệnh kubeadm join – bạn cần lưu lại để dùng cho worker node.

Khởi tạo cụm Kubernetes từ master node
Khởi tạo cụm Kubernetes từ master node (Nguồn: Internet)
  • Cấu hình truy cập cụm bằng kubectl
mkdir -p $HOME/.kube # Tạo thư mục cấu hình
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # Sao chép file cấu hình
sudo chown $(id -u):$(id -g) $HOME/.kube/config # Gán quyền truy cập cho user hiện tại

Bước 6: Cài plugin mạng cho Kubernetes (Flannel)

  • Flannel giúp các pod giao tiếp mạng với nhau
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
  • Nếu node bị “tainted” không cho chạy Pod, bạn cần gỡ bỏ:
kubectl taint nodes --all node-role.kubernetes.io/control-plane-

Bước 7: Kết nối các worker node vào cluster

1. Tắt AppArmor (nếu dùng)

sudo systemctl stop apparmor # Tắt AppArmor nếu đang bật
sudo systemctl disable apparmor # Ngăn AppArmor khởi động lại

2. Khởi động lại containerd

sudo systemctl restart containerd.service # Đảm bảo containerd hoạt động ổn định

3. Dùng lệnh kubeadm join mà bạn đã lưu ở bước trên, ví dụ

sudo kubeadm join master-node:6443 --token abc123... --discovery-token-ca-cert-hash sha256:xyz456...
# Thay master-node, abc123..., xyz456... bằng thông tin thực tế bạn nhận được từ lệnh init
Dùng lệnh kubeadm join mà bạn đã lưu ở bước trên
Dùng lệnh kubeadm join mà bạn đã lưu ở bước trên (Nguồn: Internet)

Bước 8: Kiểm tra cụm Kubernetes

Trên máy master, kiểm tra node đã kết nối chưa. Tại đây, bạn sẽ thấy danh sách các node, bao gồm cả master và worker, ở trạng thái “Ready” nếu mọi thứ hoạt động đúng.

kubectl get nodes # Xem danh sách node, nếu OK sẽ thấy tất cả đều ở trạng thái Ready
Kiểm tra cụm Kubernetes
Kiểm tra cụm Kubernetes (Nguồn: Internet)

Vietnix – Giải pháp VPS hiệu suất cao, tối ưu cho mọi nhu cầu

Vietnix cung cấp dịch vụ VPS tốc độ cao, hoạt động ổn định với cấu hình đa dạng, phù hợp cho mọi nhu cầu từ website cá nhân đến hệ thống doanh nghiệp. Với hệ thống máy chủ hiện đại đặt tại datacenter đạt chuẩn quốc tế, Vietnix cam kết mang đến hiệu suất vượt trội, thời gian uptime cao cùng khả năng mở rộng linh hoạt.

Đội ngũ kỹ thuật Vietnix luôn sẵn sàng hỗ trợ 24/7, đảm bảo bạn có thể vận hành và tối ưu dịch vụ VPS một cách dễ dàng, an toàn và hiệu quả. Cùng với các công nghệ bảo mật tiên tiến, dịch vụ của Vietnix giúp website và ứng dụng của bạn hoạt động mượt mà, bảo mật vững chắc.

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.

Câu hỏi thường gặp

Có thể cài Kubernetes hoàn toàn offline trên Ubuntu được không?

Có thể, nhưng bạn cần tải sẵn các gói, container image và cấu hình trước. Việc này đòi hỏi chuẩn bị kỹ lưỡng.

Làm sao để cài Kubernetes trên Ubuntu mà không dùng kubeadm?

Bạn có thể cài thủ công từng thành phần như etcd, kube-apiserver, kube-controller-manager,… nhưng việc này phức tạp và ít được khuyến nghị.

Có nên dùng LXD thay vì Docker/containerd khi cài Kubernetes không?

Không nên. LXD không được Kubernetes hỗ trợ chính thức như container runtime. Nên dùng containerd hoặc Docker.

Sau khi cài Kubernetes, làm sao để triển khai ứng dụng đầu tiên trên Ubuntu?

Bạn có thể tạo file YAML đơn giản cho một pod hoặc deployment, sau đó dùng kubectl apply để triển khai.

Khi cài Kubernetes trên máy ảo Ubuntu, có lưu ý gì về cấu hình mạng?

Phải đảm bảo các máy ảo có thể ping nhau, chia sẻ bridge network hoặc host-only network tuỳ theo mục đích sử dụng.

Làm sao để cấu hình thời gian chính xác trên Ubuntu để tránh lỗi khi cài Kubernetes?

Cài ntp hoặc chrony, kiểm tra với timedatectl để đảm bảo hệ thống đồng bộ thời gian đúng.

Có cần tắt AppArmor hoặc SELinux khi cài Kubernetes trên Ubuntu?

Ubuntu dùng AppArmor, không cần tắt hoàn toàn nhưng nên kiểm tra log nếu gặp lỗi liên quan đến security policy.

Làm sao để đảm bảo worker node tự động khởi động lại pod khi reboot máy?

Đảm bảo kubelet khởi động cùng hệ thống (systemctl enable kubelet) và dùng deployment có restartPolicy: Always.

Lời kết

Khi cài đặt Kubernetes đúng cách trên Ubuntu, bạn sẽ sở hữu một nền tảng mạnh mẽ để quản lý container và mở rộng ứng dụng hiệu quả. Nếu bạn có bất kỳ thắc mắc nào trong quá trình thực hiện, hãy để lại bình luận bên dưới để được hỗ trợ. Đừng ngần ngại chia sẻ bài viết nếu bạn thấy hữu ích. Và nếu bạn đang tìm kiếm một giải pháp hạ tầng đáng tin cậy, đừng bỏ qua các gói VPS tại Vietnix.

Mọi người cũng xem:

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi 30 tháng 4
Khi mua Hosting/VPS
16/04/2025 - 16/05/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG