Hiện tượng container khởi động thất bại và phương pháp chẩn đoán
Các trạng thái bất thường phổ biến:
CrashLoopBackOff: Container khởi động rồi dừng ngay lập tứcImagePullBackOff: Lỗi xác thực kho chứa hình ảnhContainerCreating: Vấn đề gắn kết volume hoặc mạng
Quy trình chẩn đoán
- Kiểm tra trạng thái Pod bằng lệnh:
kubectl describe pod <tên_pod>
- Xem nhật ký container:
kubectl logs <tên_pod> --previous
- Kiểm tra cấu hình tài nguyên
| Hiện tượng | Nguyên nhân | Giải pháp |
|---|---|---|
| ImagePullBackOff | Lỗi tên hình ảnh hoặc xác thực | Kiểm tra cấu hình imagePullSecrets |
| CrashLoopBackOff | Lỗi script khởi động | Phân tích nhật ký bằng kubectl logs |
Các điểm kiểm tra then chốt
1. Xác thực kho chứa hình ảnh
Thực hiện kiểm tra bằng lệnh:
kubectl describe pod <tên_pod>
Phân tích phần Events để xác định lỗi kết nối hoặc xác thực
2. Cấu hình tài nguyên
Cấu hình mẫu:
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "512Mi"
cpu: "500m"
Giải thích:
- requests: tài nguyên tối thiểu cần thiết
- limits: giới hạn tài nguyên để tránh chiếm dụng quá mức
3. Cấu hình lưu trữ
Mẫu khai báo PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
Kiểm tra trạng thái bằng lệnh:
kubectl get pvc
4. Cấu hình mạng
Kiểm tra file cấu hình CNI:
/etc/cni/net.d/
Đảm bảo tồn tại cấu hình đúng định dạng JSON
5. Chính sách bảo mật
Mẫu SecurityContext:
securityContext:
runAsUser: 1001
runAsNonRoot: true
capabilities:
drop:
- ALL
add:
- NET_BIND_SERVICE
Giải thích:
- Chặn tất cả capability mặc định
- Chỉ cho phép binding cổng mạng
6. Cấu hình Toleration
Mẫu cấu hình:
tolerations: - key: "env" operator: "Equal" value: "prod" effect: "NoExecute"
Giải thích:
- Cho phép Pod chạy trên node có đánh dấu taint
7. Cơ chế kiểm tra sức khỏe
Mẫu cấu hình probe:
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 10
Giải thích:
- Phân biệt giữa liveness và readiness probe
- Thiết lập thời gian delay phù hợp với thời gian khởi động ứng dụng