Bài 1: Giới Thiệu Kubernetes Và Khái Niệm Cluster Cho CKAD

Kubernetes Là Gì?

Kubernetes (thường gọi là K8s) là một nền tảng mã nguồn mở để tự động hóa việc triển khai, mở rộng, và quản lý ứng dụng container hóa. Được phát triển bởi Google và hiện duy trì bởi CNCF, Kubernetes giúp quản lý hàng nghìn container trên nhiều máy chủ, đảm bảo ứng dụng luôn sẵn sàng và mở rộng linh hoạt. Đây là kỹ năng cốt lõi cho kỳ thi CKAD, tập trung vào domain “Core Concepts” (15%).

33d7be7a-b8f8-43f8-8ce5-4aec738b8fd4

Khái Niệm Cluster Trong Kubernetes

Master Node

  • Định nghĩa: Master Node là thành phần điều khiển của cluster, chịu trách nhiệm quản lý trạng thái và lịch trình công việc.
  • Thành phần chính:
    • API Server: Giao tiếp với kubectl và các thành phần khác.
    • etcd: Lưu trữ trạng thái cluster.
    • Scheduler: Phân bổ pod lên các node.
    • Controller Manager: Duy trì trạng thái mong muốn (VD: đảm bảo số lượng pod).
  • Vai trò: Đảm bảo cluster hoạt động ổn định.

Worker Node

  • Định nghĩa: Worker Node là nơi chạy các ứng dụng, chứa các pod và được quản lý bởi Master Node.
  • Thành phần chính:
    • Kubelet: Đảm bảo container trong pod chạy đúng.
    • Kube-Proxy: Quản lý mạng và định tuyến traffic.
    • Container Runtime: Chạy container (VD: Docker, containerd).
  • Vai trò: Thực thi công việc (workload) của ứng dụng.

Pod

  • Định nghĩa: Pod là đơn vị nhỏ nhất trong Kubernetes, chứa một hoặc nhiều container chia sẻ tài nguyên (network, storage).
  • Đặc điểm:
    • Một pod thường chạy một ứng dụng, nhưng có thể có sidecar container.
    • Pod được tạo bởi các thành phần cao cấp hơn (VD: Deployment).
  • Ví dụ thực tế: Một pod chạy ứng dụng web và container log collector.

Cài Đặt Môi Trường Thực Hành

  • Công cụ cần thiết:
    • Minikube: Tạo cluster Kubernetes cục bộ.
    • kubectl: Dùng để tương tác với cluster.
  • Cài đặt trên Ubuntu:
    1. Cài Minikube:
      curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
      sudo install minikube-linux-amd64 /usr/local/bin/minikube
    2. Cài kubectl:
      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
    3. Khởi động Minikube:
      minikube start --driver=docker

      Output:

      😄  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.
    4. Kiểm tra cluster:
      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

Thực Hành Cơ Bản Với Pod

  • Tạo pod đơn giản:

    • File pod.yaml:
      apiVersion: v1
      kind: Pod
      metadata:
      name: nginx-pod
      labels:
      app: nginx
      spec:
      containers:
      - name: nginx
      image: nginx:latest
      ports:
      - containerPort: 80
    • Áp dụng cấu hình:
      kubectl apply -f pod.yaml

      Output:

      pod/nginx-pod created
    • Kiểm tra trạng thái:
      kubectl get pods

      Output:

      NAME        READY   STATUS    RESTARTS   AGE
      nginx-pod   1/1     Running   0          10s
    • Xem chi tiết:
      kubectl describe pod nginx-pod

      Output (tóm tắt):

      Name:         nginx-pod
      Namespace:    default
      Priority:     0
      Node:         minikube/192.168.49.2
      Start Time:   Wed, 30 Jul 2025 09:45:00 +0700
      Labels:       app=nginx
      Status:       Running
      IP:           172.17.0.2
      Containers:
      nginx:
      Image:        nginx:latest
      Port:         80/TCP
      State:        Running
      Ready:        True
    • Truy cập pod (qua port forwarding):
      kubectl port-forward nginx-pod 8080:80
    • Mở trình duyệt tại http://localhost:8080 để thấy trang nginx.
  • Xóa pod:

    kubectl delete -f pod.yaml

    Output:

    pod "nginx-pod" deleted

Liên Hệ Với Kỳ Thi CKAD

  • Domain liên quan: “Core Concepts” (15%).
  • Kỹ năng cần thiết: Hiểu pod, node, và cách sử dụng kubectl để tạo, kiểm tra, và xóa tài nguyên.
  • Mẹo thi: Luyện viết YAML nhanh, kiểm tra trạng thái pod với kubectl get podsdescribe, vì câu hỏi thường yêu cầu phân tích output.

Lưu Ý Quan Trọng

  • Kiểm tra môi trường: Đảm bảo Minikube chạy ổn định trước khi thực hành.
  • Hiểu YAML: Thực hành viết cấu hình thủ công, tránh dùng GUI trong thi.
  • Lệnh cơ bản: Ghi nhớ kubectl apply, get, describe, delete để tiết kiệm thời gian.
  • Debug: Sử dụng kubectl logs nếu pod gặp lỗi (sẽ học ở bài sau).

Kết Luận

Bài 1 đã giới thiệu Kubernetes, khái niệm cluster (Master Node, Worker Node, Pod), và thực hành cơ bản với pod trên Minikube. Đây là nền tảng cho các kỹ năng CKAD. Tiếp tục với Bài 2: Cài Đặt Và Quản Lý Cluster Với kubectl để mở rộng kiến thức.

Điều hướng chuỗi bài viết<< Lộ Trình Học Kubernetes Từ Cơ Bản Đến Chứng Chỉ CKAD
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