Break/Fix: phân biệt sai DNS với sai port
Tạo sự cố trong phạm vi lab của bài, thu bằng chứng, sửa rồi kiểm tra.
Break/Fix: phân biệt sai DNS với sai port
Mục tiêu
Tạo hai lỗi độc lập, thu bằng chứng và khôi phục kết nối HTTP lab.
Hiểu trước khi làm
Một lỗi tên miền và một lỗi socket có triệu chứng khác nhau; đổi firewall theo cảm tính không sửa được sai DNS hay port. Giữ lỗi trong câu lệnh client để không mất SSH.
Chuẩn bị
Hoàn thành các bài cốt lõi trước đó trong module; dùng workspace ~/kdc-labs và ứng dụng mẫu ở project. Chạy agent trên chính máy làm bài, với lab root ~/kdc-labs.
Tải ứng dụng mẫu KDC Notes · Cách tải và chuẩn bị workspace. Không cần mã nguồn nền tảng khóa học.
cd ~/kdc-labs/project
mkdir -p ../evidence
Giải thích lệnh và tham số
cd chuyển vào repo ứng dụng của bạn; .. là thư mục cha ~/kdc-labs. mkdir -p tạo thư mục bằng chứng nếu chưa có, không báo lỗi khi đã tồn tại. Mọi đường dẫn tương đối ở dưới tính từ đây, trừ khi bước ghi rõ máy/thư mục khác.
Phạm vi gây lỗi
Chỉ dùng VM có marker /etc/kdc-lab hoặc cluster/container lab đã định danh trong bài. Với Kubernetes luôn ghi --context kind-kdc, namespace kdc-*; không dùng context của công việc. Chụp trạng thái tốt trước khi gây lỗi và giữ cấu hình để phục hồi.
Thực hành
Giữ echo.py chạy. Baseline dùng --resolve tới 127.0.0.1. Gây lỗi thứ nhất bằng ánh xạ tên tới địa chỉ loopback không có server; lỗi thứ hai chọn port không dùng:
curl --connect-timeout 2 --resolve api.kdc.lab:8081:127.0.0.2 http://api.kdc.lab:8081/healthz
curl --connect-timeout 2 http://127.0.0.1:18081/healthz
Giải thích lệnh và tham số
--connect-timeout 2 giới hạn giai đoạn kết nối hai giây. --resolve chỉ ảnh hưởng request hiện tại, không sửa /etc/hosts. Exit code khác 0 ở đây là lỗi được chủ động tạo.
Dùng ss và curl -v để chứng minh socket vẫn listen ở 127.0.0.1:8081. Trước khi đọc cách khôi phục, ghi giả thuyết và một phép thử phân biệt “server dừng” với “client gọi sai đích”.
Khôi phục: bỏ ánh xạ sai, gọi đúng IP và port; không sửa firewall hoặc /etc/hosts. Lưu request thành công:
curl -fsS http://127.0.0.1:8081/healthz -o ../evidence/network-recovered.json
Giải thích lệnh và tham số
-o lưu phản hồi sau khôi phục; không tự viết JSON thay cho request thực tế.
Tiêu chí tệp nộp bài
Các đường dẫn dưới đây tính từ lab root ~/kdc-labs, không từ thư mục project. Không viết sẵn kết quả giả để qua kiểm tra. Tệp có đúng tiêu đề chưa chứng minh đã thực hiện bài; giữ đầu ra thật và tự đối chiếu các phép thử.
evidence/network-recovered.json— trườngstatusbằng"ok". Xuất từ phép thử/công cụ thật theo hướng dẫn.evidence/network-breakfix-layer.md— có nội dung## Kết quả.
Tự kiểm tra
Phản hồi sau sửa có status ok và runtime trả HTTP 200. RCA gồm hai lỗi, sự khác nhau trong verbose output và cách ngăn cấu hình endpoint sai.
Agent kiểm tra trực tiếp những trạng thái runtime ghi trong tiêu chí, đồng thời kiểm tra tệp cấu hình/hồ sơ. Một workload Ready chưa chứng minh toàn bộ yêu cầu nghiệp vụ; hãy làm cả phép thử bên trên.
Lưu bằng chứng
Tạo evidence/network-breakfix-layer.md bằng trình soạn thảo, gồm các mục dưới đây. Điền số liệu và lệnh đã chạy, thời điểm, đầu ra trước/sau, cùng kết luận của bạn; không chỉ sao chép tiêu đề. Không lưu token, mật khẩu, kubeconfig hoặc dump dữ liệu vào báo cáo.
## Môi trường
Hệ điều hành, phiên bản công cụ, cluster/VM và thời điểm.
## Kết quả
Lệnh kiểm tra, đầu ra đã che thông tin nhạy cảm, kết quả mong đợi/thực tế.
## Giải thích
Vì sao cách làm đạt mục tiêu; giới hạn của phép kiểm tra.
## Khôi phục
Cách rollback/cleanup riêng các tài nguyên lab và cách xác nhận lại.
Viết RCA
Ghi triệu chứng, phạm vi ảnh hưởng, time line, bằng chứng bác bỏ ít nhất một giả thuyết, nguyên nhân gốc, cách giảm tác động và hành động ngăn tái diễn. Mỗi hành động cần người thực hiện và cách kiểm tra; tránh quy lỗi cho cá nhân.