Hieu Solutions
Công nghệ

K8s Escape Room: Cách học Kubernetes qua troubleshooting thực tế

1 tháng 1, 1970
19 lượt xem
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ế

Nam Hoài 07:12

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é.

K8s Escape Room screenshot

Đầ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

💬 Bạn thấy bài viết này thế nào?

Chia sẻ suy nghĩ của bạn hoặc kết nối với tôi trên mạng xã hội!