Cách Fix Bug Các Lỗi Thường Gặp Trong Kubernetes

Kubernetes là một hệ thống phức tạp và việc gặp lỗi là điều không thể tránh khỏi. Bài viết này sẽ giúp bạn nhận diện và khắc phục các lỗi phổ biến trong Kubernetes.

1. Lỗi Pod Không Khởi Chạy

Kiểm tra trạng thái Pod

kubectl get pods -n <namespace>

Nếu Pod ở trạng thái Pending hoặc CrashLoopBackOff, tiếp tục kiểm tra:

kubectl describe pod <pod-name> -n <namespace>

Nguyên nhân phổ biến & Cách khắc phục:

  • Thiếu tài nguyên (CPU, RAM): Kiểm tra giới hạn tài nguyên
    kubectl top pod <pod-name>

    Giải pháp: Tăng giới hạn tài nguyên trong YAML:

    resources:
    requests:
      memory: "512Mi"
      cpu: "250m"
  • Không tìm thấy Image hoặc Image bị lỗi:
    kubectl logs <pod-name> -n <namespace>

    Kiểm tra image name, tag, registry và đảm bảo có quyền truy cập.

2. Lỗi Service Không Truy Cập Được

Kiểm tra trạng thái Service:

kubectl get svc -n <namespace>

Nếu Service không có External IP:

kubectl describe svc <service-name> -n <namespace>

Nguyên nhân & Cách khắc phục:

  • Service type là ClusterIP nhưng cần NodePort hoặc LoadBalancer:
    type: NodePort
  • Pod không lắng nghe đúng port: Kiểm tra targetPort trong Service YAML khớp với containerPort của Pod.

3. Lỗi Volume Không Mount Được

kubectl get pvc -n <namespace>

Nếu PVC ở trạng thái Pending, kiểm tra StorageClass:

kubectl get storageclass

Nguyên nhân & Cách khắc phục:

  • StorageClass không tồn tại hoặc cấu hình sai: Chọn StorageClass khác hoặc sửa lại YAML của PVC.
  • Node không có quyền truy cập vào Persistent Volume: Kiểm tra sự gắn kết của PV vào Node.

4. Lỗi Node Không Ready

kubectl get nodes

Nếu Node ở trạng thái NotReady, kiểm tra logs của Kubelet:

journalctl -u kubelet -f

Nguyên nhân & Cách khắc phục:

  • Thiếu tài nguyên trên Node: Kiểm tra với kubectl describe node <node-name>.
  • Kubelet gặp lỗi: Restart lại dịch vụ Kubelet.
    systemctl restart kubelet

5. Lỗi CrashLoopBackOff

Nếu container liên tục bị restart, kiểm tra logs:

kubectl logs <pod-name> -n <namespace>

Nguyên nhân & Cách khắc phục:

  • Lỗi cấu hình môi trường (ENV variables): Kiểm tra giá trị biến môi trường.
  • Ứng dụng bị lỗi: Chạy thử container trên local để debug.
  • Lỗi Readiness/Liveness Probes: Nếu probe sai, có thể sửa YAML:
    livenessProbe:
    httpGet:
      path: /healthz
      port: 8080
    initialDelaySeconds: 5
    periodSeconds: 10

6. Debug & Monitoring Kubernetes

Sử dụng kubectl debug:

kubectl debug node/<node-name> -it --image=busybox

Kiểm tra logs của Control Plane:

kubectl logs -n kube-system etcd-master

Sử dụng Prometheus + Grafana để giám sát:

  • Cài đặt Prometheus Operator
  • Cấu hình AlertManager để cảnh báo lỗi

Đây là danh sách lỗi phổ biến và cách khắc phục. Nếu bạn gặp vấn đề cụ thể, hãy mô tả chi tiết ở phần bình luận để mình và mọi người cùng hỗ trợ.

Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận