K8s Escape Room: Cách học Kubernetes qua troubleshooting thực tế
K8s Escape Room: Cách học Kubernetes qua troubleshooting thực tế
Gần đây tôi tìm ra một game về Kubernetes phải nói là rất ưng, giúp anh em học kubernetes bằng cách nhảy vào troubleshooting lỗi. Cụ thể là ban đầu có các lỗi được khoanh tròn và khi fix được lỗi nào nó sẽ mất đi và chúng ta sẽ làm việc trực tiếp trên cụm kubernetes được cài đặt qua docker với chỉ một vài câu lệnh đơn giản. Thực sự rất recommend anh em chơi thử xem có fix hết được lỗi không nhé.

Đầu tiên mọi người cần cài Docker trên server trước, tham khảo cách cài docker mới nhất tự động bằng script của bác Vũ Quốc nhé.
Rồi bây giờ chúng ta sẽ tiến hành vào làm luôn, đầu tiên là clone repository về:
git clone https://github.com/steadforce/k8s-escape-room.git
Tiếp đến là di chuyển đến thư mục làm việc:
cd k8s-escape-room
Đến đây tạo cái docker network để đảm bảo không lỗi khi khởi tạo:
docker network create --driver=bridge \
--subnet=10.172.242.0/24 \
--ip-range=10.172.242.0/28 \
--gateway=10.172.242.1 \
kind
Tiến hành kiểm tra xem docker network đã được tạo chưa nhé:
docker network ls | grep -w kind || true
Vì cài đặt chỉ với vài câu lệnh nhanh bằng bashscript nên tiến hành cấp quyền thực thi cho các file cần chạy:
chmod +x workbench init.sh delete-cluster.sh remove-resources.sh
Tiến hành khởi chạy file workbench trước:
./workbench
Tiếp đến chạy file init.sh trong shell hiện tại:
. init.sh
Sau khi khởi chạy thành công sẽ tạo các tài nguyên như deployment, configmap, secret, service, rbac. Bây giờ chúng ta tiến hành truy cập vào game trên trình duyệt với địa chỉ của server và nhập username để bắt đầu.
Vào màn hình chính bạn có thể thấy:
- Highscores : là xếp hạng thời gian bạn hoàn thành các thử thách (fix lỗi) của game và phần solved chính là trạng thái các vấn đề cần giải quyết (mặc định 4).
- Phần khoanh đỏ : là vấn đề cần phải giải quyết, hover vào sẽ thấy chỉ dẫn; xử lý xong thì dấu đỏ sẽ biến mất và trạng thái solved chuyển từ ❌️ sang ✅️.
Vì sau khi khởi chạy thành công, hiện tại chúng ta đang trong môi trường của container (ví dụ prompt: namhoai@b3cd3ef7b889:~/k8s-escape-room$) nên có thể sử dụng trực tiếp kubectl. Tiến hành chạy lệnh kiểm tra:
kubectl get pods -A
Bạn có thể thấy các pod như orb-deployment-..., photoframe-deployment-..., tome-deployment-... chưa hoạt động đúng (không ở trạng thái Running). Đó chính là vấn đề cần giải quyết.
Giải quyết vấn đề: cuốn sách (tome)
Đầu tiên kiểm tra chi tiết pod tome-deployment (lưu ý tên pod có hậu tố khác nhau trên môi trường của bạn):
kubectl -n default describe pod <tome-pod-name>
Trong ví dụ kết quả cho thấy: Error: couldn't find key ancientKey in Secret default/tome-secret — Kubernetes đã tìm thấy Secret nhưng key ancientKey không tồn tại trong .data.
Kiểm tra giá trị key trong Secret:
kubectl -n default get secret tome-secret -o jsonpath='{.data.ancientKey}'
Nếu kết quả rỗng tức là .data.ancientKey = null. Ta cập nhật key ancientKey trong Secret tome-secret (namespace default) với giá trị ancient-key bằng cách patch Secret (giá trị cần base64):
kubectl -n default patch secret tome-secret \
-p '{"data":{"ancientKey":"'$(echo -n "ancient-key" | base64)'"} }'
Sau khi cập nhật Secret, phải xóa pod để deployment tạo lại (pod không tự restart khi Secret thay đổi):
kubectl -n default delete pod -l app=tome
Kiểm tra pod mới lên:
kubectl -n default get pods -l app=tome -w
Kết quả sẽ hiển thị ví dụ:
NAME READY STATUS RESTARTS AGE
tome-deployment-5f6c54d6cc-dpxdv 1/1 Running 0 1s
Sau khi fix xong phần Secret, chỗ cuốn sách khoanh đỏ trên giao diện game sẽ mở ra và trạng thái solved cập nhật (1/4 vấn đề đã được khắc phục).
Mọi người tiếp tục fix các vấn đề còn lại để luyện troubleshooting. Nếu cần, tác giả sẽ tiếp tục giải các lỗi còn lại và cập nhật.
Kết luận
Trước có thấy bác Vũ Quốc chia sẻ các bài viết như Dockerlings hay Vimmaster để việc học các công nghệ thêm gia vị. Việc học qua thử thách (game/troubleshooting) giúp trải nghiệm thú vị hơn so với chỉ đọc docs hay hỏi AI.
Nên mọi người có thể tham gia State of DevOps VietNam 2026 để góp ý, giúp cộng đồng DevOps Việt Nam phát triển mạnh hơn.
Tag: kubernetes