Bài 2: Kubernetes Pod Deployment – Triển Khai Ứng Dụng Đầu Tiên

Pod Và Deployment Là Gì?

pod

Kubernetes Pod Deployment là hai khái niệm cốt lõi trong Kubernetes. Pod là đơn vị nhỏ nhất, chứa một hoặc nhiều container, chạy trên cùng một node. Deployment quản lý các Pod, đảm bảo số lượng Pod mong muốn luôn chạy và hỗ trợ cập nhật ứng dụng. Trong bài 1, bạn đã tạo Pod đơn giản bằng file YAML. Bài này sẽ hướng dẫn bạn sử dụng Deployment để triển khai ứng dụng đầu tiên (Nginx) trên Minikube và truy cập nó.

Lưu ý: Bạn cần đã cài đặt Minikube và kubectl (xem bài 1: Kubernetes Cơ Bản: Cài Đặt Minikube Và Chạy Pod). Hướng dẫn này dùng Minikube trên Ubuntu 22.04.

Bước 1: Khởi Động Cluster Minikube

  • Hành động:
    1. Khởi động cluster Minikube:
      minikube start --driver=docker
  • Kết quả thực tế:
    • Terminal hiển thị:
          minikube v1.33.1 on Ubuntu 22.04
          Using the docker driver
          Starting control plane node in cluster minikube
          Creating docker container (CPUs=2, Memory=2200MB) ...
          Preparing Kubernetes v1.29.0 on Docker 24.0.5 ...
          Done! kubectl is now configured to use "minikube" cluster

      (Dòng “Done!” xác nhận cluster đã khởi động).

Bước 2: Tạo Deployment Và Kiểm Tra Pod

  • Hành động:
    1. Tạo file nginx-deployment.yaml:
      touch nginx-deployment.yaml

      Mở file và dán nội dung:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: nginx-deployment
      spec:
      replicas: 3
      selector:
       matchLabels:
         app: nginx
      template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
         - name: nginx
           image: nginx:latest
           ports:
           - containerPort: 80
    2. Triển khai Deployment:
      kubectl apply -f nginx-deployment.yaml
    3. Kiểm tra Deployment và Pod:
      kubectl get deployments
      kubectl get pods
  • Kết quả thực tế:
    • Sau khi chạy kubectl apply, terminal hiển thị:
      deployment.apps/nginx-deployment created
    • Lệnh kubectl get deployments hiển thị:
      NAME              READY   UP-TO-DATE   AVAILABLE   AGE
      nginx-deployment  3/3     3            3           15s
    • Lệnh kubectl get pods hiển thị:
      NAME                               READY   STATUS    RESTARTS   AGE
      nginx-deployment-5d9f8b6f5-abcde   1/1     Running   0          15s
      nginx-deployment-5d9f8b6f5-fghij   1/1     Running   0          15s
      nginx-deployment-5d9f8b6f5-klmno   1/1     Running   0          15s

      (Deployment tạo 3 Pod, đều ở trạng thái Running).

Bước 3: Truy Cập Ứng Dụng Qua Port-Forward

  • Hành động:
    1. Chuyển tiếp cổng để truy cập một Pod:
      kubectl port-forward nginx-deployment-5d9f8b6f5-abcde 8080:80
    2. Mở trình duyệt và truy cập http://localhost:8080.
  • Kết quả thực tế:
    • Terminal hiển thị:
      Forwarding from 127.0.0.1:8080 -> 80
      Forwarding from [::1]:8080 -> 80
    • Truy cập http://localhost:8080, bạn sẽ thấy trang mặc định của Nginx:
      Welcome to nginx!

Bước 4: Xóa Tài Nguyên Để Dọn Dẹp

  • Hành động:
    1. Xóa Deployment:
      kubectl delete -f nginx-deployment.yaml
    2. Dừng và xóa cluster Minikube:
      minikube stop
      minikube delete
  • Kết quả thực tế:
    • Sau khi chạy kubectl delete, terminal hiển thị:
      deployment.apps "nginx-deployment" deleted
    • Sau khi chạy minikube delete, terminal hiển thị:
          Deleting "minikube" in docker ...
          Deleted minikube cluster

      (Xác nhận cluster đã bị xóa).

Lưu Ý Quan Trọng

  • Replicas: Số lượng Pod được định nghĩa bởi replicas trong Deployment. Nếu một Pod bị xóa, Deployment sẽ tự động tạo lại.
  • Port-Forward: Chỉ dùng để thử nghiệm. Để truy cập thực tế, bạn cần Service (sẽ học ở bài 3).
  • Tài liệu tham khảo: Xem thêm về Deployment (Kubernetes Deployment).
Điều hướng chuỗi bài viết<< Bài 1: Kubernetes Cơ Bản – Cài Đặt Minikube Và Chạy Pod Đầu Tiên
>> Bài 3: Kubernetes Service Ingress – Quản Lý Truy Cập Ứng Dụng
Article Thumbnail
Datadog Webinar: Modernize AWS Logs at Scale

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