Các vấn đề thường gặp & Ghi chú xử lý lỗi
1. Lỗi InitContainer KSOPS v4.5.1 (Image Distroless)
Phần tiêu đề “1. Lỗi InitContainer KSOPS v4.5.1 (Image Distroless)”Hiện tượng
Phần tiêu đề “Hiện tượng”Pod argocd-repo-server bị kẹt ở trạng thái Init:CrashLoopBackOff với dòng log báo lỗi:
container_linux.go: starting container process caused: exec: "sh": executable file not found in $PATHNguyên nhân
Phần tiêu đề “Nguyên nhân”Từ phiên bản KSOPS v4.4, image được chuyển sang nền tảng Google Distroless (không chứa shell hệ thống). Cách viết initContainer truyền thống chạy lệnh shell (sh -c "cp /usr/local/bin/ksops /custom-tools/") sẽ lập tức gãy đổ do không tìm thấy binary sh.
Cách khắc phục
Phần tiêu đề “Cách khắc phục”Cấu hình initContainer chạy trực tiếp binary ksops với subcommand cài đặt được tích hợp sẵn:
initContainers: - name: install-ksops image: viaductoss/ksops:v4.5.1 command: ["ksops"] args: ["install", "--with-kustomize", "/custom-tools"] volumeMounts: - mountPath: /custom-tools name: custom-toolsTham số --with-kustomize là bắt buộc vì ArgoCD đi kèm một bản binary Kustomize riêng.
2. Let’s Encrypt Rate Limits & Thất bại HTTP-01 Challenge
Phần tiêu đề “2. Let’s Encrypt Rate Limits & Thất bại HTTP-01 Challenge”Hiện tượng
Phần tiêu đề “Hiện tượng”Chứng chỉ SSL bị kẹt ở trạng thái Issuing hoặc ACME challenge báo quá thời gian chờ (timeout):
Waiting for HTTP-01 challenge propagationCác bước kiểm tra & khắc phục
Phần tiêu đề “Các bước kiểm tra & khắc phục”- Cấu hình Cloudflare Proxy:
Đảm bảo bản ghi DNS cho
argocd.timi.io.vnvàdemo-nginx.timi.io.vnban đầu được để ở chế độ Grey Cloud (DNS-only). Sau khi chứng chỉ đã cấp phát thành công, bạn có thể bật lại Cloudflare Proxy (Orange Cloud) và đặt chế độ SSL là Full (strict) để tránh lỗi redirect loop. - Tránh Rate Limit của Let’s Encrypt:
Trong quá trình thử nghiệm ban đầu, luôn trỏ ClusterIssuer tới môi trường Staging của Let’s Encrypt (
https://acme-staging-v02.api.letsencrypt.org/directory). Khi hệ thống đã hoạt động ổn định mới chuyển sang Production.
3. Lỗi tạm thời không tìm thấy ClusterIssuer
Phần tiêu đề “3. Lỗi tạm thời không tìm thấy ClusterIssuer”Hiện tượng
Phần tiêu đề “Hiện tượng”ArgoCD báo lỗi sync cụm trong lần đầu tiên chạy:
the server could not find the requested resource (post clusterissuers.cert-manager.io)Nguyên nhân & Xử lý
Phần tiêu đề “Nguyên nhân & Xử lý”Tài nguyên CRD của cert-manager chưa kịp đăng ký xong vào Kubernetes API thì manifest ClusterIssuer đã được nạp vào.
- Sử dụng sync wave: Gán
argocd.argoproj.io/sync-wave: "-1"cho deployment của cert-manager vàargocd.argoproj.io/sync-wave: "0"choClusterIssuer. - Nhờ cơ chế tự phục hồi (
selfHeal), ArgoCD sẽ tự động thử lại sau vài giây và cụm sẽ tự hội tụ về trạng thái xanh (Healthy).
4. Xử lý sự cố khoá cổng SSH / Firewall
Phần tiêu đề “4. Xử lý sự cố khoá cổng SSH / Firewall”Hiện tượng
Phần tiêu đề “Hiện tượng”Không thể SSH vào máy chủ sau khi chạy role Ansible common.
Nguyên nhân
Phần tiêu đề “Nguyên nhân”Tường lửa UFW được kích hoạt nhưng chưa cấu hình cho phép cổng 22 hoặc IP dev kết nối.
Cứu hộ khẩn cấp
Phần tiêu đề “Cứu hộ khẩn cấp”- Đăng nhập vào trang quản trị Hetzner Cloud Console.
- Mở tính năng VNC Web Console cho máy chủ
hetzner-cx33-nbg. - Kiểm tra và mở lại cổng SSH trực tiếp từ console:
Terminal window sudo ufw status verbosesudo ufw allow 22/tcpsudo ufw reload
5. Giám sát tài nguyên máy chủ Single-Node
Phần tiêu đề “5. Giám sát tài nguyên máy chủ Single-Node”VPS CX33 có 2 vCPU và 8GB RAM. Toàn bộ control plane k3s, Traefik, cert-manager và ArgoCD chỉ chiếm khoảng 1.5GB đến 2.0GB RAM:
# Giám sát tải tài nguyên trên nodekubectl top node
# Theo dõi mức tiêu thụ RAM của từng pod trên toàn cụmkubectl top pods -A --sort-by=memory