Bài 2: Cài Đặt Minikube Và sử dụng kubectl Cơ Bản

Sau khi đã nắm được các khái niệm cốt lõi về Kubernetes ở Bài 1, chúng ta sẽ bước vào phần thực hành đầu tiên. Bài này tập trung vào việc cài đặt Minikube một công cụ đơn giản dễ tiếp cận nhất để tạo cluster Kubernetes local và làm quen với các command kubectl cơ bản. Đây là nền tảng quan trọng để bạn có thể tương tác thực tế với Kubernetes vì cơ bản là làm luôn trên máy cá nhân được không cần hạ tầng khủng.

Bài viết này thuộc domain Core Concepts của kỳ thi CKAD (chiếm 15% trọng số), là phần thể hiện khả năng thiết lập môi trường và sử dụng kubectl để quản lý cluster. Trong CKAD, bạn sẽ làm việc trong một môi trường thi online với sẵn cluster, nhưng mà chắc rồi việc thực hành trên Minikube sẽ giúp bạn quen thuộc với các command, giúp tiết kiệm thời gian với 120 phút cho 15-20 nhiệm vụ hands-on (Thông thường mình thấy không dùng hết thời gian đâu mà).

Chúng ta sẽ sử dụng tài liệu chính thức từ KubernetesMinikube để đảm bảo tính chính xác, kèm theo các mẹo thực tế để áp dụng vào kỳ thi (mà mình cũng tham khảo từ docs chính thức và các nguồn lớn khác mình cũng nói ở bài lộ trình rồi).

Tiện đây thì mình cũng để luôn các cách cài đặt Minikube trên các hệ điều hành phổ biến, sau đó học cách sử dụng kubectl để xem, tạo và quản lý tài nguyên. Bài viết sẽ dài và chi tiết để bạn có thể theo dõi từng bước.

Minikube Là Gì Và Tại Sao Nên Sử Dụng?

Minikube là một công cụ mã nguồn mở do cộng đồng Kubernetes phát triển, cho phép bạn chạy một cluster Kubernetes đơn giản trên máy tính cá nhân. Nó sử dụng các driver như Docker, VirtualBox, Hyper-V hoặc VMware để tạo một node duy nhất (hoặc multi-node nếu cần), mô phỏng môi trường Production. Minikube hỗ trợ các tính năng như dashboard, addons (ví dụ: ingress, metrics-server), và dễ dàng tích hợp với kubectl.

Lợi ích chính của Minikube:

  • Dễ dàng thiết lập: Chỉ cần vài command để có cluster chạy.
  • Tiết kiệm chi phí: Không cần tài khoản cloud như AWS EKS hay GKE.
  • Lý tưởng cho học tập và phát triển: Bạn có thể thử nghiệm, debug mà không ảnh hưởng đến môi trường thực.
  • Tích hợp với CKAD: Minikube giúp bạn luyện tập các nhiệm vụ thi như tạo pod, deployment, hoặc debug, vì kỳ thi yêu cầu kỹ năng thực hành nhanh với kubectl trên một cluster tương tự.

Trong CKAD, bạn không cần cài Minikube (cluster đã được cấp sẵn rồi), nhưng việc thực hành trên đó sẽ giúp bạn nắm vững cách cluster hoạt động, từ khởi động đến kiểm tra trạng thái những kỹ năng xuất hiện ở các domain như Core Concepts và Pod Design.

Dưới đây là sơ đồ minh họa kiến trúc Minikube từ tài liệu chính thức, cho thấy cách nó tạo một cluster local với load balancer, services và pods.

https://fusionauth.io/img/docs/get-started/download-and-install/kubernetes/fa-minikube.png

Hướng Dẫn Cài Đặt Minikube Chi Tiết

Trước khi cài đặt, hãy đảm bảo máy tính của bạn đáp ứng yêu cầu cơ bản: Ít nhất 2 CPU cores, 4GB RAM, và một container runtime như Docker (khuyến nghị). Nếu chưa có Docker, tải tại docker.com. Sau khi cài Minikube, bạn cần cài kubectl (sẽ hướng dẫn ở phần sau).

Dưới đây là hướng dẫn chi tiết cho từng hệ điều hành, dựa trên tài liệu chính thức từ Minikube (phiên bản mới nhất). Mình sẽ bao gồm các lựa chọn cài đặt phổ biến: binary download, package manager, và verification steps. Nếu gặp lỗi, kiểm tra driver (ví dụ: minikube start --driver=docker).

Cài Đặt Minikube Trên Linux (x86-64)

Yêu cầu tiên quyết: Truy cập curl và sudo. Nếu dùng Debian-based (Ubuntu), chuẩn bị cho .deb; RPM-based (Fedora, CentOS) cho .rpm.

Cách 1: Tải binary trực tiếp (Khuyến nghị)

  1. Tải file binary:
    curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
  2. Cài đặt và dọn dẹp:
    sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

Cách 2: Sử dụng Debian Package

  1. Tải package:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
  2. Cài đặt:
    sudo dpkg -i minikube_latest_amd64.deb

Cách 3: Sử dụng RPM Package

  1. Tải package:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
  2. Cài đặt:
    sudo rpm -Uvh minikube-latest.x86_64.rpm

Cài xong bạn sẽ thấy output như này:

 😄  minikube v1.31.2 on Ubuntu 20.04
 ✨  Using the docker driver based on user configuration
 👍  Starting control plane node minikube in cluster minikube
 🚜  Pulling base image ...
 🔥  Creating docker container (CPUs=2, Memory=4000MB) ...
 🐳  Preparing Kubernetes v1.27.3 on Docker ...
 🌟  Enabled addons: default-storageclass, storage-provisioner
 🏄  Done! kubectl is now configured to use "minikube" cluster.

Kiểm tra và khởi động:

  • Kiểm tra phiên bản: minikube version.
  • Khởi động cluster: minikube start (sử dụng quyền admin nếu cần).
  • Xác nhận: minikube status hoặc kubectl get nodes. Nếu thấy node “Ready”, thành công! Lưu ý: Một số service như storage-provisioner có thể mất vài phút để chạy.

    kubectl cluster-info

    Output:

    Kubernetes control plane is running at https://127.0.0.1:8443
    CoreDNS is running at https://127.0.0.1:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

Cài Đặt Minikube Trên macOS (x86-64 và ARM64)

Yêu cầu tiên quyết: Homebrew (cài tại brew.sh) cho cách dễ nhất, hoặc curl/sudo cho binary.

Cách 1: Sử dụng Homebrew (Khuyến nghị cho cả Intel và Apple Silicon)

  1. Cài đặt:
    brew install minikube
  2. Nếu command which minikube không tìm thấy:
    brew unlink minikube && brew link minikube

Cách 2: Tải binary (x86-64)

  1. Tải:
    curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-darwin-amd64
  2. Cài đặt:
    sudo install minikube-darwin-amd64 /usr/local/bin/minikube

Cách 3: Tải binary (ARM64)

  1. Tải:
    curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-darwin-arm64
  2. Cài đặt:
    sudo install minikube-darwin-arm64 /usr/local/bin/minikube

Kiểm tra và khởi động: Giống Linux. Sử dụng minikube start --driver=hyperkit nếu dùng HyperKit driver.

Cài Đặt Minikube Trên Windows (x86-64)

Yêu cầu tiên quyết: Windows Package Manager (winget) hoặc Chocolatey (chocolatey.org). PowerShell với quyền admin cho .exe.

Cách 1: Sử dụng Winget

  1. Cài đặt:
    winget install Kubernetes.minikube

Cách 2: Sử dụng Chocolatey

  1. Cài đặt:
    choco install minikube

Cách 3: Tải .exe

  1. Tạo thư mục và tải (PowerShell):
    New-Item -Path 'c:\' -Name 'minikube' -ItemType Directory -Force
    $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -OutFile 'c:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing

    Hoặc tải installer từ https://storage.googleapis.com/minikube/releases/latest/minikube-installer.exe và chạy.

  2. Thêm vào PATH (PowerShell admin):
    $oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
    if ($oldPath.Split(';') -inotcontains 'C:\minikube'){
    }
  3. Đóng và mở lại terminal.

Kiểm tra và khởi động: Giống trên. Sử dụng minikube start --driver=hyperv nếu dùng Hyper-V.

Sau khi cài, thử minikube dashboard để mở giao diện web xem cluster. Nếu gặp lỗi (ví dụ: driver không tương thích), tham khảo https://minikube.sigs.k8s.io/docs/drivers/.

Cài Đặt Và Làm Quen Với kubectl

kubectl (phát âm “cube-control”) là công cụ CLI chính thức để tương tác với Kubernetes API. Nó cho phép bạn tạo, xem, cập nhật và xóa tài nguyên như pods, services. Để cài đặt:

  • Trên Linux/macOS: curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && sudo install kubectl /usr/local/bin/kubectl (thay linux/amd64 bằng hệ thống của bạn).
  • Trên Windows: Tải từ https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/.

Kích hoạt autocomplete cho Bash: source <(kubectl completion bash) (thêm vào ~/.bashrc). Điều này cực kỳ hữu ích cho CKAD, giúp bạn gõ command nhanh hơn.

Dưới đây là các command kubectl cơ bản, phân loại theo chức năng. Mình sẽ giải thích chi tiết, kèm ví dụ và liên hệ thực tế.

Cấu Hình kubectl (Configuration)

  • Xem cấu hình hiện tại: kubectl config view hiển thị kubeconfig, bao gồm clusters, users, contexts.
    Ví dụ: Kiểm tra sau khi start Minikube để thấy context “minikube”.
  • Chuyển context: kubectl config use-context minikube chuyển sang cluster local.
  • Đặt namespace mặc định: kubectl config set-context --current --namespace=default tiết kiệm thời gian khi không cần chỉ định -n mỗi command.

Trong CKAD, bạn thường làm việc với nhiều namespaces command này giúp tránh lỗi sai namespace.

Xem Tài Nguyên (Viewing Resources)

  • Liệt kê pods: kubectl get pods hoặc kubectl get po -A (tất cả namespaces). Thêm -o wide để xem IP/node.
    Ví dụ: Sau minikube start, chạy command này để thấy pods hệ thống như coredns.
  • Mô tả chi tiết: kubectl describe pod <pod-name> xem events, status, conditions. Rất hữu ích debug.
  • Liệt kê nodes: kubectl get nodes kiểm tra trạng thái cluster.
  • Liệt kê events: kubectl get events --sort-by=.metadata.creationTimestamp xem lịch sử sự kiện.

Mẹo CKAD: Sử dụng JSONPath để trích xuất dữ liệu cụ thể, ví dụ: kubectl get pods -o jsonpath='{.items[*].metadata.name}' liệt kê tên pods.

Tạo Và Quản Lý Tài Nguyên (Creating Resources)

  • Áp dụng manifest YAML: kubectl apply -f file.yaml – Tạo/cập nhật tài nguyên từ file (declarative).
    Ví dụ: Tạo pod đơn giản:
    cat <<EOF > my-pod.yaml
    apiVersion: v1
    kind: Pod
    metadata:
    name: nginx
    spec:
    containers:
    - name: nginx
      image: nginx
    EOF

    Apply cấu hình:

    kubectl apply -f my-pod.yaml
  • Tạo imperative: kubectl create deployment my-dep --image=nginx nhanh cho test.
  • Xóa tài nguyên: kubectl delete pod nginx hoặc kubectl delete -f file.yaml.

Trong CKAD, ưu tiên apply vì thi yêu cầu viết YAML thủ công.

Các Command Khác Cơ Bản

  • Exec vào pod: kubectl exec -it <pod-name> -- /bin/sh – Chạy shell bên trong container.
  • Xem logs: kubectl logs <pod-name> – Debug ứng dụng.
  • Port-forward: kubectl port-forward pod/nginx 8080:80 – Truy cập service local.

Dưới đây là bảng cheat sheet kubectl, tóm tắt các command cơ bản để bạn lab.

699de0c1-fcd4-4820-86d2-01645b9f4ff8

Liên Hệ Với Chứng Chỉ CKAD

Domain Core Concepts yêu cầu thành thạo kubectl để xử lý 15% câu hỏi, như tạo pod từ YAML, describe node, hoặc get resources. Trong lúc thi, bạn có 2 giờ để hoàn thành tasks hands-on, nên luyện autocomplete và lệnh tắt (po thay pods, svc thay services).

Mẹo: Sử dụng kubectl explain pod để xem docs YAML nhanh. Thực hành trên Minikube sẽ giúp bạn quen với môi trường thi (dùng browser-based terminal), tránh mất thời gian debug cài đặt.

Thực Hành Thực Tế

  1. Cài Minikube và start cluster.
  2. Chạy kubectl get nodeskubectl get pods -A.
  3. Tạo pod nginx như ví dụ, describe nó, rồi delete.
  4. Mở dashboard: minikube dashboard và khám phá giao diện.

Nếu gặp vấn đề, dùng minikube logs để debug.

Kết Luận

Bài này đã hướng dẫn bạn cài đặt Minikube và làm quen kubectl cơ bản bước đệm cho các bài thực hành sau. Bạn giờ có thể tự tạo cluster local và tương tác với nó, để chuẩn bị cho CKAD. Tiếp theo, ở Bài 3: Quản Lý Pod Cơ Bản (Create, Delete, Describe), chúng ta sẽ đi sâu vào pods với các ví dụ YAML thực tế.

Điều hướng chuỗi bài viết<< Bài 1: Giới Thiệu Kubernetes Và Khái Niệm Cluster Cho CKAD>> Bài 3: Quản Lý Pod Cơ Bản (Create, Delete, Describe)

Thông tin nổi bật

Báo cáo quan trọng

Sự kiện đang hiện hành

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận