0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Cấu Hình Health Check Trong Kubernetes: Liveness, Readiness và Startup Probe

Đăng vào 3 tuần trước

• 4 phút đọc

Giới thiệu

Chào các bạn, hôm nay mình sẽ hướng dẫn các bạn cách cấu hình health check cho ứng dụng chạy trên Kubernetes. Chúng ta sẽ tìm hiểu về các loại probe: Liveness, Readiness và Startup Probe. Việc này rất quan trọng trong quản lý và vận hành ứng dụng để đảm bảo chúng luôn ở trạng thái sẵn sàng phục vụ người dùng.

Tại sao cần Health Check?

Trong quá trình triển khai ứng dụng, việc đảm bảo rằng ứng dụng luôn hoạt động là cực kỳ quan trọng. Nếu ứng dụng gặp sự cố mà không được phát hiện kịp thời, người dùng có thể gặp phải lỗi 500 hoặc trải nghiệm không tốt. Chẳng hạn, nếu một ứng dụng cần thời gian dài để khởi động hoặc đang thực hiện kết nối với cơ sở dữ liệu, người dùng có thể nhận được thông báo lỗi trong khi ứng dụng vẫn chưa sẵn sàng phục vụ.

Kubernetes cung cấp giải pháp cho các vấn đề này thông qua việc cấu hình health check, giúp tự động thực hiện các hành động cần thiết, chẳng hạn như khởi động lại ứng dụng khi phát hiện lỗi.

Chuẩn bị

Trước khi bắt đầu, bạn cần truy cập vào cluster Kubernetes của mình. Chúng ta sẽ sử dụng một ứng dụng đơn giản để minh họa. Hãy tạo một thư mục mới tên là k8s-healthcheck và tạo file deployment.yml với nội dung sau:

yaml Copy
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-healthcheck
spec:
  selector:
    matchLabels:
      app: demo-healthcheck
  template:
    metadata:
      labels:
        app: demo-healthcheck
    spec:
      containers:
      - name: myapp
        image: maitrungduc1410/viblo-k8s-healthcheck
        imagePullPolicy: Always
        ports:
          - containerPort: 3000
            name: myport
        resources:
          requests:
            cpu: 100m
            memory: 128Mi 
          limits:
            cpu: 200m
            memory: 256Mi 

Tiếp theo, tạo file svc.yml để định nghĩa service:

yaml Copy
apiVersion: v1
kind: Service
metadata:
  name: demo-healthcheck
spec:
  selector:
    app: demo-healthcheck
  ports:
    - name: mysvc
      protocol: TCP
      port: 80
      targetPort: myport
  type: LoadBalancer

Sau khi tạo xong hai file này, áp dụng chúng vào Kubernetes:

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

Liveness Probe

Liveness Probe giúp kiểm tra xem ứng dụng có đang hoạt động hay không. Nếu không, Kubernetes sẽ tự động khởi động lại ứng dụng. Để sử dụng Liveness Probe, chúng ta cần cập nhật file deployment.yml như sau:

yaml Copy
livenessProbe:
  httpGet:
    path: /liveness
    port: 3000
  initialDelaySeconds: 5
  periodSeconds: 10

Áp dụng lại file để cập nhật cấu hình:

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

Startup Probe

Startup Probe nhằm đảm bảo rằng ứng dụng đã khởi động thành công. Nếu ứng dụng mất nhiều thời gian để khởi động, bạn có thể sử dụng Startup Probe để kiểm tra. Cấu hình như sau:

yaml Copy
startupProbe:
  httpGet:
    path: /healthz
    port: myport
  failureThreshold: 30
  periodSeconds: 10

Readiness Probe

Readiness Probe kiểm tra xem ứng dụng đã sẵn sàng để nhận lưu lượng hay chưa. Nếu ứng dụng chưa sẵn sàng, Kubernetes sẽ xóa pod khỏi service endpoint. Dưới đây là cấu hình cho Readiness Probe:

yaml Copy
readinessProbe:
  httpGet:
    path: /readiness
    port: myport
  initialDelaySeconds: 5
  periodSeconds: 10
  failureThreshold: 1
  successThreshold: 3

So Sánh Giữa Các Loại Probe

Loại Probe Mục Đích Hành Động Khi Failed Giai Đoạn Thực Hiện Ảnh Hưởng Đến Traffic
Liveness Probe Đảm bảo container luôn chạy Khởi động lại container Suốt vòng đời của container Không ảnh hưởng trực tiếp
Startup Probe Đảm bảo container đã khởi động thành công Không có hành động cụ thể Chỉ khi khởi động Không ảnh hưởng trực tiếp
Readiness Probe Đảm bảo container sẵn sàng tiếp nhận traffic Xóa pod khỏi Service Endpoint Suốt vòng đời của container Ảnh hưởng đến traffic

Kết Luận

Trong bài viết này, chúng ta đã tìm hiểu cách cấu hình health check cho ứng dụng trên Kubernetes với các loại probe khác nhau và ứng dụng của chúng. Việc sử dụng đúng các loại probe giúp đảm bảo ứng dụng luôn hoạt động hiệu quả và phục vụ tốt nhất cho người dùng.

Chúc các bạn thành công 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