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ảnmaxReplicas: Số bản sao tối đa, giới hạn tiêu thụ tài nguyêntargetCPUUtilizationPercentage: 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 PVCpersistentVolumeClaimRetentionPolicy: 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