0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hướng Dẫn Cấu Hình Horizontal Pod Autoscaling Trong Kubernetes Để Tăng Khả Năng Chịu Tải Ứng Dụng

Đăng vào 4 ngày trước

• 3 phút đọc

Giới Thiệu

Chào các bạn, mình lại trở lại với series Kubernetes. Trong bài viết này, chúng ta sẽ khám phá cách cấu hình Horizontal Pod Autoscaling (HPA) trong K8S để tự động mở rộng ứng dụng và cải thiện khả năng chịu tải.

Mục Tiêu

Chúng ta sẽ triển khai một ứng dụng tính số Fibonacci và thực hiện một bài kiểm tra fake DDoS lên server. Nhờ có HPA, chúng ta có thể tự động mở rộng số lượng Pod khi lượng truy cập tăng cao, từ đó giữ cho ứng dụng hoạt động mượt mà.

Cấu Hình Môi Trường

Trước tiên, bạn cần truy cập vào cluster K8S của mình thông qua đường link sau: learnk8s.jamesisme.com.

Triển Khai Ứng Dụng

Bước 1: Tạo folder chứa mã nguồn và tạo file deployment.yml với nội dung như sau:

yaml Copy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app.kubernetes.io/name: viblo-k8s-hpa
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: maitrungduc1410/viblo-k8s-hpa:latest
        ports:
        - containerPort: 3000
          name: pod-http
        resources:
          requests:
            memory: "128Mi"
            cpu: "64m"
          limits:
            memory: "512Mi"
            cpu: "250m"

Bước 2: Tiếp theo, tạo file svc.yml:

yaml Copy
apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  type: LoadBalancer
  ports:
    - name: svc-http
      protocol: TCP
      port: 80
      targetPort: pod-http
  selector:
    app: myapp

Bước 3: Áp dụng các file manifest:

bash Copy
kubectl apply -f . --kubeconfig=./kubernetes-config

Bước 4: Kiểm tra trạng thái service:

bash Copy
kubectl get svc --kubeconfig=./kubernetes-config

Khi bạn thấy EXTERNAL-IP đã sẵn sàng, bạn có thể mở trình duyệt và truy cập vào địa chỉ IP đó.

Kiểm Tra Tải Lượng

Sau khi triển khai, để tạo tải lượng lên server, chúng ta sẽ chạy một script fake DDoS:

bash Copy
docker run -it --rm --name load-generator busybox:1.28 sh -c "while sleep 0.01; do wget -q -O- http://<EXTERNAL-IP>/api/hello?iterations=3000; done"

Scale Thủ Công Để Cứu Ứng Dụng

Khi ứng dụng bắt đầu gặp khó khăn với tải lượng cao, bạn có thể tăng số lượng replicas từ 1 lên 2 hoặc nhiều hơn trong file deployment.yml như sau:

yaml Copy
spec:
  replicas: 2 # ---> sửa ở đây

Sau đó áp dụng lại file manifest như trước để giúp ứng dụng chịu tải tốt hơn.

Tự Động Scale Với HPA

HPA tự động điều chỉnh số lượng Pod dựa trên chỉ số CPU/RAM. Để cấu hình HPA, hãy tạo file hpa.yml. Mẫu nội dung như sau:

yaml Copy
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 1
  maxReplicas: 6
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70

Áp dụng HPA:

bash Copy
kubectl apply -f hpa.yml --kubeconfig=./kubernetes-config

Theo Dõi HPA

Bạn có thể theo dõi sự thay đổi của HPA và kiểm tra hiệu suất của ứng dụng qua lệnh:

bash Copy
kubectl get hpa --kubeconfig=./kubernetes-config --watch

Với những bước này, bạn sẽ thấu hiểu rõ hơn về cách HPA hoạt động và làm tăng khả năng chịu tải của ứng dụng Kubernetes. Cảm ơn bạn đã theo dõi bài viết và hẹn gặp lại trong những bài viết tiếp theo!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào