Quay lại

Hướng dẫn cài đặt và sử dụng Kubernetes (K8s) trên Ubuntu cho người mới bắt đầu Chuyên mục Devops    2025-06-17    0 Lượt xem    0 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Hướng dẫn cài đặt và sử dụng Kubernetes (K8s) trên Ubuntu cho người mới bắt đầu

1. Giới thiệu

Trong bài viết này, chúng ta sẽ cùng nhau cài đặt Kubernetes trên máy Ubuntu để thực hành và tìm hiểu về cách Kubernetes hoạt động. Bài viết sẽ giải thích chi tiết các thành phần được cài, cách chạy Pod, triển khai Service và những lưu ý quan trọng khi sử dụng Kubernetes trong thực tế.


2. Cài đặt Kubernetes trên Ubuntu với Minikube

Bước 1: Cài đặt Docker

Minikube sử dụng Docker làm driver chính. Cài Docker:

sudo apt update
sudo apt install -y docker.io
sudo usermod -aG docker $USER
newgrp docker

Bước 2: Cài Minikube

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
minikube version

Bước 3: Cài kubectl

curl -LO https://dl.k8s.io/release/v1.30.1/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
kubectl version --client

Bước 4: Khởi động Minikube

minikube start --driver=docker

Câu lệnh này tạo 1 Node cluster có đủ các thành phần Control Plane và Worker Node.


3. Giải thích các thành phần đã cài

3.1. kubectl

  • Là CLI dùng để tương tác với Kubernetes cluster

  • Gửi lệnh đến API Server

3.2. Minikube

  • Tạo cluster local gồm control-plane + worker

  • Hỗ trợ Dashboard GUI, LoadBalancer, volume...

3.3. Docker

  • Là container runtime

  • Chạy container cho Pod bên trong Node


4. Triển khai một ứng dụng đơn giản

Bước 1: Tạo Deployment

kubectl create deployment my-nginx --image=nginx

Bước 2: Tạo Service

kubectl expose deployment my-nginx --type=NodePort --port=80

Bước 3: Mở ứng dụng

minikube service my-nginx

Câu lệnh này tự động mở browser để xem app.


5. Các câu hỏi và lưu ý quan trọng

5.1. Chạy nhiều Pod trong 1 Node để scale được không?

✨ Được! Kubernetes cho phép chạy nhiều Pod trong 1 Node nếu tài nguyên (CPU, RAM) cho phép.

Nhưng nếu Node bị sập, tất cả Pod đó sẽ bị mất theo.

5.2. Vậy có cần nhiều Node không?

✅ Nếu bạn muốn HA (High Availability) hoặc prod environment, nên có nhiều Node để Kubernetes có thể tự chia Pod qua nhiều máy.

5.3. Tại sao expose port 80 nhưng lại truy cập qua port 30456?

  • Khi expose kiểu NodePort, Kubernetes sẽ mapping port 80 nội bộ vào một port ngẫu nhiên trên node (vd: 30456)

  • Phải truy cập qua localhost:30456 hoặc dùng minikube service để tự động forward

5.4. Cách bật Dashboard GUI

minikube dashboard

Lệnh này sẽ khởi động giao diện Web GUI và mở trong browser.


6. Tổng hợp các lệnh thường dùng

🔧 Cluster & Node

minikube start --driver=docker         # Khởi tạo cluster với driver Docker
kubectl get nodes                       # Xem danh sách node
kubectl describe node <node-name>       # Xem chi tiết tài nguyên node

📦 Làm việc với Pod/Deployment

kubectl create deployment <name> --image=<image>       # Tạo Deployment
kubectl get pods                                        # Danh sách pod
kubectl describe pod <pod-name>                        # Chi tiết pod
kubectl delete pod <pod-name>                          # Xóa pod

🔄 Scale ứng dụng

kubectl scale deployment <name> --replicas=3           # Scale lên 3 Pod

🌐 Service & Networking

kubectl expose deployment <name> --type=NodePort --port=80  # Tạo Service
kubectl get svc                                             # Xem danh sách service
minikube service <svc-name>                                 # Mở dịch vụ trong browser

📊 Dashboard GUI

minikube dashboard                                         # Mở giao diện GUI

⚙️ Cấu hình, Debug

kubectl get events                                        # Xem sự kiện hệ thống
kubectl logs <pod-name>                                   # Xem log của pod
kubectl describe <resource> <name>                        # Mô tả chi tiết tài nguyên

7. Kết luận

  • Minikube là công cụ hoàn hảo để bắt đầu với Kubernetes local

  • Cài đặt nhanh, không cần cloud

  • Hiểu rõ Node, Pod, Service và scaling sẽ giúp bạn lên prod dễ dàng hơn

 

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday