Cấu hình cao sẵn của faas-netes: Xây dựng nền tảng hàm serverless sản xuất

faas-netes là một nền tảng hàm serverless chạy trên Kubernetes, cho phép các nhà phát triển thực thi các hàm trong môi trường điều phối container. Bài viết này sẽ hướng dẫn bạn cách triển khai faas-netes một cách đáng tin cậy, đảm bảo tính ổn định và sẵn sàng sử dụng của các dịch vụ hàm trong môi trường sản xuất.

Tại sao cần cấu hình cao sẵn?

Tính sẵn sàng của dịch vụ là yếu tố quan trọng trong môi trường sản xuất. faas-netes đóng vai trò trung tâm trong việc thực thi các hàm, do đó khả năng chịu lỗi của nó ảnh hưởng trực tiếp đến tất cả các dịch vụ được triển khai trên nó. Bằng cách thiết kế kiến trúc phù hợp và tối ưu hóa cấu hình, chúng ta có thể nâng cao khả năng chịu lỗi của hệ thống và giảm thiểu nguy cơ gián đoạn dịch vụ do lỗi điểm đơn lẻ.

Các chiến lược cao sẵn chính

Cấu hình bản sao nhân

Để đảm bảo khả năng cao sẵn của các thành phần quan trọng, trước hết cần thiết lập số lượng bản sao phù hợp. Trong triển khai Kubernetes, thông qua việc đặt trường replicas, bạn có thể chỉ định số bản sao của thành phần. Ví dụ trong file triển khai Kafka thử nghiệm:

replicas: 1

Trong môi trường sản xuất, khuyến nghị đặt số bản sao cho các thành phần như cổng API, bộ điều khiển, v.v. ít nhất là 3 để đảm bảo vẫn có đủ phiên bản cung cấp dịch vụ khi các nút gặp sự cố.

Cấu hình mở rộng tự động

faas-netes hỗ trợ khả năng mở rộng tự động dựa trên chỉ số, điều chỉnh tài nguyên động theo tải thực tế. Trên Kubernetes, điều này được thực hiện thông qua HorizontalPodAutoscaler, các tham số cấu hình chính bao gồm:

  • minReplicas: Số bản sao tối thiểu, đảm bảo khả dụng cơ bản
  • maxReplicas: Số bản sao tối đa, giới hạn tiêu thụ tài nguyên
  • targetCPUUtilizationPercentage: Mức sử dụng CPU mục tiêu, ngưỡng kích hoạt mở rộng

Cấu hình các tham số này một cách hợp lý giúp cân bằng giữa hiệu suất và tối ưu hóa sử dụng tài nguyên.

Cấu hình lưu trữ bền vững

Với các thành phần cần lưu trữ dữ liệu liên tục như Prometheus, sử dụng PersistentVolumeClaim (PVC) để đảm bảo dữ liệu không bị mất khi các Pod khởi động lại. StatefulSet cung cấp khả năng tạo và quản lý PVC tự động, các cấu hình liên quan bao gồm:

  • volumeClaimTemplates: Định nghĩa mẫu PVC
  • persistentVolumeClaimRetentionPolicy: Cấu hình chính sách giữ lại PVC, bao gồm hành vi khi xóa và thu nhỏ

Các cấu hình này đảm bảo tính bền vững và đáng tin cậy của dữ liệu quan trọng.

Bước thực hiện

1. Chuẩn bị môi trường

Hãy đảm bảo rằng cụm Kubernetes của bạn đáp ứng các yêu cầu sau:

  • Ít nhất 3 nút worker
  • Đã cài đặt Helm package manager
  • Cấu hình lớp lưu trữ (StorageClass) phù hợp

2. Sao chép kho

git clone https://gitcode.com/gh_mirrors/fa/faas-netes
cd faas-netes

3. Cấu hình các tham số cao sẵn

Chỉnh sửa file values.yaml của Helm chart, đặt số bản sao và giới hạn tài nguyên cho các thành phần quan trọng:

# Ví dụ về cấu hình
gateway:
  replicas: 3
  resources:
    requests:
      cpu: 100m
      memory: 128Mi
    limits:
      cpu: 500m
      memory: 256Mi

controller:
  replicas: 3
  resources:
    requests:
      cpu: 200m
      memory: 256Mi
    limits:
      cpu: 1000m
      memory: 512Mi

4. Kích hoạt mở rộng tự động

Cấu hình HorizontalPodAutoscaler cho các thành phần chính, ví dụ:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: gateway-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: gateway
  minReplicas: 3
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

5. Triển khai lưu trữ bền vững

Cấu hình PVC cho các thành phần cần lưu trữ dữ liệu liên tục, ví dụ Prometheus:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: prometheus-du-lieu
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

6. Thực hiện triển khai

Sử dụng Helm để triển khai:

helm install openfaas ./chart/openfaas -f values.yaml

Theo dõi và bảo trì

Kiểm tra sức khỏe

Cấu hình các probe sống (liveness probe) và sẵn sàng (readiness probe) thích hợp, cho phép Kubernetes phát hiện và thay thế các phiên bản gặp sự cố một cách kịp thời.

Sao lưu định kỳ

Triển khai chính sách sao lưu định kỳ, đặc biệt đối với dữ liệu sử dụng PVC. Có thể sử dụng chức năng chụp ảnh của Kubernetes hoặc các công cụ bên thứ ba để sao lưu dữ liệu.

Cập nhật phiên bản

Cập nhật định kỳ faas-netes lên phiên bản ổn định mới nhất để nhận các tính năng và sửa lỗi bảo mật mới. Sử dụng chức năng nâng cấp của Helm để thực hiện nâng cấp mượt mà:

helm upgrade openfaas ./chart/openfaas -f values.yaml

Thẻ: faas-netes Kubernetes Helm HighAvailability

Đăng vào ngày 29 tháng 6 lúc 14:51