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
Kết quả
Tiếp đến chạy file init.sh trong shell hiện tại
. init.sh
Kết quả bắt đầu khởi chạy
Kết quả sau khi khởi chạy thành công đã 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ỉ IP_SERVER sẽ thấy giao diện, đến đây sẽ tiến hành 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 và mặc định đang là 4.
- Phần khoanh đỏ: là vấn đề cần phải giải quyết, bạn chỉ cần hover vào sẽ thấy chỉ dẫn và xử lý xong thì dấu đỏ sẽ biến mất và trạng thái phần solved sẽ 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 bạn sẽ thấy ví dụ namhoai@b3cd3ef7b889:~/k8s-escape-room$ (tức là đã 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
Kết quả
Bạn có thể thấy là các pod như orb-deployment-7f9d77998f-fmpfb và photoframe-deployment-76bf44684b-frsjn và tome-deployment-5f6c54d6cc-857rr trạng thái hiện tại chưa hoạt động đúng là running như các tài nguyên khác. Đó chính là vấn đề chúng ta cần giải quyết.
Bây giờ, tôi và mọi người sẽ tiến hành đi giải một usecase, thú vị phết đấy. Đầu tiên vào giải quyết vấn đề của cuốn sách được khoanh đỏ nhé.
Tôi sẽ tiến hành chạy lệnh xem chi tiết vấn đề đang sảy ra ở đâu (phần này mọi người chú ý là mỗi pod nó sẽ sinh ra các tên pod khác nhau nhé chỉ chú ý tiền tố tư orb-deployment, photoframe-deployment, tome-deployment) vì có thể có các bạn mới nên tôi phải lưu ý chi tiết.
Tiến hành chạy lệnh kiểm tra thử pod tome-deployment
kubectl -n default describe pod tome-deployment-5f6c54d6cc-857rr
Kết quả
Rõ ràng vấn đề ở đây có thể thấy được là Error: couldn't find key ancientKey in Secret default/tome-secret tức là kubernetes đã tìm thấy secret nhưng bên trong Secret Key ancientKey có vấn đề.
Tiếp tục chúng ta tiến hành chạy kiểm tra thử
kubectl -n default get secret tome-secret -o jsonpath='{.data.ancientKey}'
Và kết quả rỗng tức là Secret Key ancientKey chưa tồn tại trong .data nên container fail khi start, tức là .data.ancientKey = null
Hiểu vấn đề rồi thì giải quyết thôi, tôi tiến hành chạy lệnh để cập nhật key ancientKey trong Secret tome-secret (namespace default) với giá trị là ancient-key.
kubectl -n default patch secret tome-secret \
-p '{"data":{"ancientKey":"'$(echo -n "ancient-key" | base64)'"} }'
Rồi bây giờ chúng ta sẽ tiến hành xóa pod để cho deployment tạo lại (vì update Secret pod sẽ không tự động tạo lại chắc anh em cũng biết rồi)
kubectl -n default delete pod -l app=tome
Và tiến hành kiểm tra lại xem pod lên chưa
kubectl -n default get pods -l app=tome -w
Kết quả rõ ràng đã lênh thành công
NAME READY STATUS RESTARTS AGE
tome-deployment-5f6c54d6cc-dpxdv 1/1 Running 0 1s
Và ra bên ngoài kiểm tra sẽ thấy ngay chỗ cuốn sách được hết khoanh đỏ đã mở ra (do chúng ta đã fix đúng phần secret) và phần solved đã khắc phục được 1/4 vấn đề

Đến đây, mọi người tiếp tục fix để học và thêm phần kích thích nhé, tôi giải hết thì không ổn còn nếu anh em có nhu cầu có thể còm men tôi sẽ giải nốt và update :)))
Kết luận
Trước có thấy bác Vũ Quốc chia sẻ các bài viết Dockerlings hay Vimmaster để việc học các công nghệ thêm gia vị không chỉ là đọc docs, hỏi AI,… cái quan trọng là cảm giác thử thách cũng sẽ thú vị hơn.
Nên mọi người có thể tham gia State of DevOps VietNam 2026 của DevOps VietNam để góp ý, để các sếp biết được đúng nhu cầu của anh em giúp các diễn giả (tôi cũng có một chút chia sẻ) hiểu nhu cầu mọi người hơn và cái rất quan trọng là để cộng đồng DevOps Việt Nam chúng ta phát triển không thua kém gì trên thế giới.














