Tin tức và phân tích của tất cả các thiết bị di động

Cách triển khai các ứng dụng trong Kubernetes

Kubernetes là một trong những nền tảng tự động hóa phổ biến nhất để triển khai, mở rộng quy mô và vận hành các bộ chứa ứng dụng trên một cụm máy chủ hoặc nút.

Trong bài viết này, chúng ta sẽ đề cập đến một trong những đối tượng chính trong Kubernetes: triển khai. Mục tiêu là để hiểu hành vi của nó và cách nó được tạo, cập nhật và xóa.

Triển khai là gì?

Deployment là một trong những đối tượng dùng để chạy Pods. Các phương pháp hay nhất của Kubernetes khuyến khích triển khai cho các ứng dụng không trạng thái. Nếu không triển khai, bạn phải tạo, cập nhật và xóa nhiều nhóm theo cách thủ công, điều này sẽ rất tẻ nhạt và không khả thi đối với nhiều nhóm.

Việc triển khai khai báo một đối tượng duy nhất trong YAML, đối tượng này không chỉ tạo các nhóm mà còn đảm bảo rằng chúng được cập nhật và hoạt động. Bạn cũng có thể dễ dàng tự động mở rộng quy mô ứng dụng của mình bằng cách triển khai lên Kubernetes. Theo cách này, quá trình triển khai được sử dụng để mở rộng quy mô, triển khai và khôi phục phiên bản ứng dụng trong Pods.

Việc triển khai cũng cho Kubernetes biết chúng tôi muốn chạy bao nhiêu bản sao của Pod và Kubernetes sẽ thực hiện phần còn lại. Bộ điều khiển được liên kết sẽ tạo một bộ bản sao từ cấu hình của bạn khi bạn tạo triển khai. Bộ điều khiển được liên kết với Bộ bản sao sẽ tạo một chuỗi nhóm từ cấu hình Bộ bản sao.

Ưu điểm của việc sử dụng triển khai thay vì tạo bộ bản sao trực tiếp là:

  • Lịch sử hóa đối tượng: mọi thay đổi đối với đối tượng (thông qua “áp dụng” hoặc “chỉnh sửa”) sẽ sao lưu phiên bản trước đó.
  • Rollback và quản lý rollback: Bạn có thể quay lại cấu hình liên quan đến điểm trước đó.

Tạo một vị trí

Có hai phương pháp chúng ta có thể sử dụng để tạo triển khai Kubernetes:

Phương pháp bắt buộc

API Kubernetes cho phép tiếp cận trực tiếp và bắt buộc hơn mà không cần tệp cấu hình hoặc tệp kê khai YAML. Theo cách tiếp cận này, tất cả những gì chúng ta phải làm là nói những gì chúng ta muốn làm và Kubernetes sẽ chịu trách nhiệm xác định những gì cần làm để đạt được kết quả như mong đợi.

Để sử dụng phương pháp bắt buộc, hãy sử dụng lệnh bên dưới:

kubectl create deployment nginx-deployment --image nginx --port=80

phương pháp khai báo

Trong phương pháp này, bạn phải khai báo mọi thứ và khi bạn sử dụng mã này, Kubernetes chỉ cần đọc các định nghĩa của bạn và tạo chính xác như được trình bày hoặc khai báo.

Để sử dụng triển khai khai báo, bạn sẽ cần tạo một tệp YAML.

Tệp YAML để triển khai có tên new_deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  #Specifies the number of Pod Copies
  replicas: 3
 #Selects the Pod to be managed by the deployment
  selector:
    #Matches the defined labels
    matchLabels:
      deploy: example
  template:
    metadata:
      #Specifies the labels on the Pod.
       labels:
         deploy: example
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.2 

Trong tệp YAML này, sau khi xác định phiên bản API Kubernetes, loại đối tượng được tạo và tên triển khai, sẽ có một phần thông số kỹ thuật. Trong phần này, trước tiên bạn xác định một khóa bản sao cho biết số lượng phiên bản nhóm mà việc triển khai cần lưu giữ.

Sử dụng nhãn bộ chọn để xác định các nhóm trong quá trình triển khai của bạn. Để thực hiện việc này, bạn có thể sử dụng nhãn triển khai cho bạn biết rằng tất cả các bộ chứa khớp với các nhãn đó đều được nhóm trong một triển khai.

Sau đó, bạn có một đối tượng mẫu nơi bạn có mô hình Pod trong thông số triển khai của mình. Khi triển khai tạo các nhóm, nó sẽ tạo chúng bằng cách sử dụng mẫu này. Thông số kỹ thuật của một nhóm thông thường có thể được tìm thấy trong khóa mẫu.

Với triển khai này, hình ảnh Nginx có nhãn sẽ được triển khai trong nhóm. Hơn nữa, bạn phải cẩn thận vào thời điểm này và Pod là một đơn vị có khả năng mở rộng trong Kubernetes, vì vậy bạn phải suy nghĩ về mẫu bạn muốn sử dụng nếu đặt nhiều vùng chứa trong cùng một Pod.

Sau đó áp dụng tệp new_deployment.yaml Yaml, sử dụng lệnh sau:

kubectl apply -f new_deployment.yaml

Sau vài giây, bạn có thể nhận được trạng thái triển khai bằng cách sử dụng:

kubectl get all

Tải xuống và cập nhật triển khai

Lưu ý rằng bạn đã tạo nhóm, triển khai và bộ bản sao. Do đó, việc triển khai luôn tạo và quản lý một bộ bản sao. Bây giờ bạn có thể sử dụng lệnh sau để mô tả việc triển khai:

kubectl describe deployment nginx-deployment 

Bây giờ bạn đã có một mô tả đầy đủ về việc triển khai. Làm nổi bật chiến lược được sử dụng để tạo/xây dựng lại các nhóm khi một bản cập nhật được xác định là RollingUpdate.

Chiến lược RollingUpdate cho phép di chuyển có trật tự một phiên bản ứng dụng sang phiên bản mới hơn. Đây là chiến lược mặc định được sử dụng trong Kubernetes.

Ngoài ra, chúng tôi cũng có các chiến lược sau:

  • Tái tạo: chấm dứt các phiên bản Pod hiện đang chạy và “tái tạo” chúng bằng phiên bản mới;
  • Xanh da trời/Xanh lá cây: Chiến lược này tạo ra hai môi trường riêng biệt nhưng giống hệt nhau. Trong môi trường xanh lam, ứng dụng hoạt động như hiện tại, trong khi ở môi trường xanh lục, ứng dụng sẽ hoạt động như trong tương lai;
  • Canary: Chiến lược triển khai trong đó một nhóm nhỏ người dùng tham gia vào việc phát hành gia tăng ứng dụng hoặc dịch vụ.

Nếu bạn chọn “cập nhật cuộn”, bạn có thể định cấu hình hành vi của nó cho số lượng bản sao mong muốn.

  • maxSurge cho phép bạn chỉ ra (tỷ lệ phần trăm hoặc tuyệt đối) số lượng nhóm mà nó có thể tạo ngoài số lượng bản sao hiện được định cấu hình.
  • maxUnavailable cho phép bạn cho biết (theo tỷ lệ phần trăm hoặc giá trị tuyệt đối) có bao nhiêu nhóm có thể “không khả dụng” trong quá trình cập nhật, tùy thuộc vào số lượng bản sao được định cấu hình.

Tùy thuộc vào ứng dụng và bộ chia tỷ lệ tự động của bạn, các cấu hình này sẽ cho phép bạn đảm bảo QoS hoặc tăng tốc độ triển khai.

Sau đó, bạn cần chia tỷ lệ các nhóm thành 10 và thay đổi thẻ hình ảnh Nginx thành thẻ mới nhất.

kubectl scale deployment nginx-deployment --replicas=10

Lưu ý rằng chúng ta đang tạo 5 thùng chứa và đối với 10 Pod chúng tôi có 5 có sẵn.

Sau vài giây, sử dụng lệnh sau:

kubectl get all

Tại đây, bạn có thể thấy rằng tất cả các nhóm đã được tạo và các vùng chứa đang chạy.

Xóa triển khai

Để xóa triển khai Kubernetes, bạn có thể sử dụng các lệnh sau:

kubectl delete deploy nginx-deployment 
kubectl delete deploy new_deployment.yaml

Helm: Đơn giản hóa việc triển khai

Khi bạn muốn triển khai một ứng dụng phức tạp sử dụng hàng chục, thậm chí hàng trăm tài nguyên Kubernetes, kubectl trở nên không đủ, đó là lý do tại sao Helm được phát triển. Helm là trình quản lý gói cho Kubernetes được xây dựng trên kubectl và đơn giản hóa việc triển khai ứng dụng.

Trong từ điển Helm, ứng dụng này được gọi là phát hành. Nó được liên kết với một biểu đồ, là tập hợp các tệp cấu hình ở định dạng YAML chứa các biến toàn cầu và các mẫu mô tả tài nguyên Kubernetes.

Đăng kí

Việc triển khai là đối tượng cốt lõi của Kubernetes. Bởi vì sức mạnh lớn đi kèm với trách nhiệm lớn, bạn phải cẩn thận khi thiết lập nó hoặc mạo hiểm với hành vi không mong muốn. Để tiến xa hơn với các cấu hình triển khai, bạn có thể tham khảo tài liệu Kubernetes.

Bạn cũng có thể xem hướng dẫn Kubernetes tốt nhất để học từ đầu và trở thành chuyên gia.