Deploy an App

Deploy An App

1. Giới Thiệu

Kubernetes là nền tảng mã nguồn mở mạnh mẽ giúp tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng containerized. Trong quá trình học tập và phát triển ứng dụng trên Kubernetes, việc hiểu rõ về Deployments và cách sử dụng kubectl để quản lý chúng là rất quan trọng. Bài hướng dẫn này sẽ chỉ dẫn bạn cách triển khai ứng dụng đầu tiên trên Kubernetes bằng kubectl, từ việc tạo Deployment, triển khai Service, đến việc quản lý và giám sát ứng dụng.


2. Mục Tiêu

  • Hiểu về các đối tượng Deployments trong Kubernetes.
  • Triển khai một ứng dụng mẫu trên Kubernetes sử dụng kubectl.
  • Xem và quản lý Deployment và Pod.
  • Triển khai Service để truy cập ứng dụng từ bên ngoài cluster.
  • Xem logs của ứng dụng để kiểm tra hoạt động.
  • Mở rộng và cập nhật Deployment để quản lý phiên bản ứng dụng.

3. Trước Khi Bắt Đầu

Trước khi bắt đầu, hãy đảm bảo rằng bạn đã thực hiện các bước sau:

  1. Cài Đặt kubectl: Bạn cần cài đặt kubectl để quản lý Kubernetes cluster. Xem Install kubectl để biết hướng dẫn cài đặt chi tiết.
  2. Thiết Lập Cluster Kubernetes: Bạn cần có một Kubernetes cluster đang chạy. Bạn có thể sử dụng Minikube, một cluster trên đám mây như Google Kubernetes Engine (GKE), hoặc bất kỳ giải pháp nào khác phù hợp với nhu cầu của bạn.
  3. Kết Nối kubectl với Cluster: Đảm bảo rằng kubectl đã được cấu hình để kết nối với cluster Kubernetes mà bạn muốn quản lý. Kiểm tra bằng lệnh:
    kubectl config current-context
    

    Nếu chưa kết nối, hãy tham khảo Connecting kubectl to a Cluster để biết cách cấu hình.


4. Sử Dụng kubectl Để Tạo Deployment

4.1. Hiểu Về Deployments

Deployment là một đối tượng trong Kubernetes giúp bạn quản lý việc triển khai và cập nhật các Pods một cách dễ dàng. Deployment đảm bảo rằng số lượng Pods bạn mong muốn luôn chạy và tự động khởi động lại Pods nếu chúng gặp sự cố.

Lợi Ích của Deployments:

  • Quản Lý Phiên Bản: Dễ dàng cập nhật ứng dụng mà không gây gián đoạn dịch vụ.
  • Tự Động Khôi Phục: Tự động khởi động lại Pods khi gặp sự cố.
  • Mở Rộng và Thu Nhỏ: Dễ dàng thay đổi số lượng Pods dựa trên nhu cầu sử dụng tài nguyên.

4.2. Tạo Deployment Đầu Tiên

Để triển khai ứng dụng đầu tiên, bạn sẽ tạo một Deployment sử dụng kubectl. Trong ví dụ này, chúng ta sẽ sử dụng một container image đơn giản dựa trên NGINX để phục vụ các yêu cầu HTTP.

Bước 1: Tạo Deployment

kubectl create deployment hello-nginx --image=nginx

Lệnh này sẽ tạo một Deployment có tên hello-nginx với một Pod chạy container nginx.

Bước 2: Kiểm Tra Deployment

kubectl get deployments

Kết quả sẽ hiển thị thông tin về Deployment đã tạo:

NAME          READY   UP-TO-DATE   AVAILABLE   AGE
hello-nginx   1/1     1            1           2m

4.3. Kiểm Tra Deployment và Pod

Xem Deployment:

kubectl describe deployment hello-nginx

Lệnh này cung cấp thông tin chi tiết về Deployment, bao gồm các chiến lược cập nhật, số lượng Pods, và trạng thái hiện tại.

Xem Pod:

kubectl get pods

Kết quả sẽ hiển thị các Pods được tạo bởi Deployment:

NAME                            READY   STATUS    RESTARTS   AGE
hello-nginx-5f76cf6ccf-br9b5     1/1     Running   0          2m

4.4. Triển Khai Service để Truy Cập Ứng Dụng

Để truy cập ứng dụng NGINX từ bên ngoài cluster, bạn cần tạo một Service. Service giúp định tuyến lưu lượng mạng đến các Pods phù hợp.

Bước 1: Triển Khai Service

kubectl expose deployment hello-nginx --type=LoadBalancer --port=80
  • --type=LoadBalancer: Expose Service ra ngoài cluster.
  • --port=80: Cổng mà Service sẽ lắng nghe.

Bước 2: Xem Service đã tạo

kubectl get services

Kết quả sẽ hiển thị thông tin về Service:

NAME          TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
hello-nginx   LoadBalancer   10.96.144.78    <pending>       80:30369/TCP   2m
kubernetes    ClusterIP      10.96.0.1        <none>          443/TCP        10m

Bước 3: Truy Cập Ứng Dụng Trên các nhà cung cấp đám mây hỗ trợ load balancer, một địa chỉ IP bên ngoài sẽ được cấp để truy cập Service. Trên Minikube, bạn có thể sử dụng lệnh sau để truy cập ứng dụng:

minikube service hello-nginx

Lệnh này sẽ mở trình duyệt và hiển thị ứng dụng NGINX đang chạy.

4.5. Xem Logs của Ứng Dụng

Để kiểm tra hoạt động của ứng dụng, bạn có thể xem logs của Pod.

Bước 1: Lấy tên Pod

kubectl get pods

Ví dụ:

NAME                            READY   STATUS    RESTARTS   AGE
hello-nginx-5f76cf6ccf-br9b5     1/1     Running   0          2m

Bước 2: Xem Logs

kubectl logs hello-nginx-5f76cf6ccf-br9b5

Kết quả sẽ hiển thị các logs từ container NGINX:

127.0.0.1 - - [11/Sep/2024:09:19:26 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0"

Lưu Ý:

  • Thay thế hello-nginx-5f76cf6ccf-br9b5 bằng tên Pod thực tế của bạn.

4.6. Mở Rộng và Cân Bằng Deployment

Bước 1: Mở Rộng Deployment Bạn có thể tăng số lượng replicas để ứng dụng có thể xử lý nhiều yêu cầu hơn.

kubectl scale deployment hello-nginx --replicas=3

Bước 2: Kiểm Tra Deployment và Pods Sau Khi Mở Rộng

kubectl get deployments
kubectl get pods

Kết quả sẽ hiển thị số lượng Pods đã tăng lên:

NAME          READY   UP-TO-DATE   AVAILABLE   AGE
hello-nginx   3/3     3            3           5m

4.7. Cập Nhật Deployment

Khi có phiên bản mới của ứng dụng, bạn có thể cập nhật Deployment để triển khai phiên bản mới mà không gây gián đoạn dịch vụ.

Bước 1: Cập Nhật Deployment với Image Mới

kubectl set image deployment/hello-nginx nginx=nginx:1.19.0

Bước 2: Kiểm Tra Trạng Thái Cập Nhật

kubectl rollout status deployment/hello-nginx

Kết quả sẽ thông báo rằng việc cập nhật đã hoàn thành thành công:

deployment "hello-nginx" successfully rolled out

Bước 3: Kiểm Tra Pods Đã Cập Nhật

kubectl get pods

Kết quả sẽ hiển thị các Pods mới với phiên bản image đã cập nhật.


5. Dọn Dẹp

Sau khi hoàn thành việc triển khai và thử nghiệm, bạn có thể dọn dẹp các tài nguyên đã tạo để giải phóng tài nguyên cluster.

Bước 1: Xóa Service và Deployment

kubectl delete service hello-nginx
kubectl delete deployment hello-nginx

Bước 2: Kiểm Tra Tài Nguyên Đã Xóa

kubectl get deployments
kubectl get services

Kết quả sẽ không còn hiển thị các tài nguyên đã xóa.


6. Kết Luận

Việc triển khai ứng dụng trên Kubernetes sử dụng kubectl là một bước quan trọng để quản lý và vận hành các ứng dụng containerized hiệu quả. Bằng cách hiểu rõ về Deployments, cách tạo và quản lý chúng, bạn có thể dễ dàng triển khai, mở rộng và cập nhật ứng dụng một cách linh hoạt và an toàn.

Những Điểm Chính:

  • Deployments: Quản lý việc triển khai và cập nhật Pods một cách dễ dàng.
  • kubectl: Công cụ mạnh mẽ để quản lý Kubernetes cluster và các đối tượng bên trong.
  • Service: Expose ứng dụng để truy cập từ bên ngoài cluster.
  • Scaling và Rolling Updates: Đảm bảo ứng dụng có thể mở rộng và cập nhật mà không gây gián đoạn.

7. Tiếp Theo

  • Triển khai ứng dụng đầu tiên trên Kubernetes với Minikube: Hướng dẫn chi tiết cách triển khai và quản lý ứng dụng sử dụng Minikube.
  • Tìm hiểu thêm về các đối tượng Deployment: Khám phá sâu hơn về các chiến lược cập nhật và rollback trong Deployments.
  • Tìm hiểu thêm về các đối tượng Service: Hiểu rõ cách thức Service giúp kết nối và truy cập các ứng dụng trong cluster.
  • Sử dụng Helm để quản lý các ứng dụng Kubernetes: Tìm hiểu cách sử dụng Helm charts để dễ dàng triển khai và quản lý các ứng dụng phức tạp.

8. Tài Nguyên Tham Khảo

4 những suy nghĩ trên “Deploy an App

  1. Pingback: Expose Your App Publicly trên Kubernetes - SysAdmin Skills

  2. Pingback: Update Your App trên Kubernetes - SysAdmin Skills

  3. Pingback: ConfigMaps và Sidecar Containers - SysAdmin Skills

  4. Pingback: Stateless Applications trong Kubernetes - SysAdmin Skills

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *