10 lệnh kubectl hữu ích cho các tác vụ vận hành Kubernetes hàng ngày
Trong vận hành Kubernetes, phần lớn sự cố bắt đầu từ những câu hỏi rất cụ thể: Pod nào đang lỗi, container restart vì nguyên nhân gì, Deployment đã triển khai xong chưa hoặc phiên bản nào cần rollback?
kubectl cung cấp các lệnh để trả lời từng câu hỏi đó trực tiếp từ cluster. Bài viết dưới đây cùng Bizfly Cloud tổng hợp 10 lệnh kubectl hữu ích cho các tác vụ vận hành Kubernetes. Nếu cần xem lại các khái niệm nền trước khi thực hành, bạn có thể tham khảo bài Kubernetes (K8s) là gì và cách hoạt động.
Trong các ví dụ dưới đây:
<namespace>là namespace cần kiểm tra<pod-name>là tên Pod<container-name>là tên container<deployment-name>là tên Deployment<revision>là số revision cần xem hoặc khôi phục
Cần thay các giá trị này bằng thông tin thực tế trước khi chạy lệnh.
1. kubectl get - Kiểm tra trạng thái resource hiện tại
Khi bắt đầu kiểm tra một sự cố, nên dùng kubectl get để biết resource đang ở trạng thái nào. Những thành phần như Pod, Deployment và Service trong Kubernetes thường là nhóm đầu tiên cần kiểm tra.

kubectl get là lệnh dùng để liệt kê và kiểm tra trạng thái của một hoặc nhiều tài nguyên trong Kubernetes
Liệt kê các Pod trong một namespace:
kubectl get pods -n <namespace>Xem thêm địa chỉ IP của Pod và worker node đang chạy Pod:
kubectl get pods -n <namespace> -o wideKiểm tra nhanh Deployment và Service:
kubectl get deployment,service -n <namespace>Nếu chưa biết Pod đang nằm trong namespace nào, có thể kiểm tra trên toàn cluster:
kubectl get pods -Akubectl get thường là lệnh đầu tiên cần chạy vì nó giúp thu hẹp phạm vi sự cố trước khi chuyển sang kiểm tra chi tiết hơn.
2. kubectl describe - Hiểu nguyên nhân resource gặp lỗi
kubectl get cho biết điều gì đang xảy ra, còn kubectl describe giúp tìm hiểu nguyên nhân phía sau.

Lệnh kubectl describe giúp bạn xem thông tin chi tiết và danh sách sự kiện (Events)
Kiểm tra chi tiết một Pod:
kubectl describe pod <pod-name> -n <namespace>Kiểm tra một Deployment:
kubectl describe deployment <deployment-name> -n <namespace>Output của lệnh có thể bao gồm image, container, volume, node, resource request, resource limit, readiness probe và liveness probe.
Khi kiểm tra Pod lỗi, nên chú ý phần Events ở cuối output. Một số thông báo thường gặp gồm:
Failed to pull image: Không thể tải container imageBack-off restarting failed container: Container liên tục khởi động lạiReadiness probe failed: Ứng dụng chưa sẵn sàng nhận trafficFailedScheduling: Pod chưa được lên lịch trên nodeFailedMount: Không thể gắn volume vào Pod
Quy trình thường dùng là:
- Chạy
kubectl getđể tìm resource lỗi - Chạy
kubectl describetrên resource đó - Đọc phần Events để xác định bước kiểm tra tiếp theo
3. kubectl logs - Xem Application Logs
Trạng thái Pod cho biết container đang gặp vấn đề, nhưng application logs thường mới là nơi thể hiện lỗi cụ thể của ứng dụng.
Xem logs của Pod:
kubectl logs <pod-name> -n <namespace>Nếu Pod có nhiều container, chỉ định container cần xem:
kubectl logs <pod-name> -c <container-name> -n <namespace>Theo dõi logs theo thời gian thực:
kubectl logs -f <pod-name> -n <namespace>Với lỗi CrashLoopBackOff, nên kiểm tra logs của container trước lần restart gần nhất:
kubectl logs <pod-name> --previous -n <namespace>Tùy chọn --previous giúp xem logs của instance container đã kết thúc. Đây thường là dữ liệu quan trọng để xác định ứng dụng bị crash vì lỗi cấu hình, lỗi kết nối cơ sở dữ liệu hoặc lỗi trong quá trình khởi động.
Nếu chỉ muốn xem một số dòng logs gần nhất, có thể dùng:
kubectl logs <pod-name> --tail=100 -n <namespace>4. kubectl exec - Truy cập container đang chạy
Khi logs chưa đủ để xác định nguyên nhân, kubectl exec cho phép chạy lệnh trực tiếp bên trong container đang hoạt động.

Sử dụng lệnh [kubectl exec](index:0.6.1) giúp bạn chạy lệnh hoặc mở phiên shell trực tiếp bên trong một container
Nếu image có sh:
kubectl exec -it <pod-name> -n <namespace> -- /bin/shNếu container có Bash:
kubectl exec -it <pod-name> -c <container-name> -n <namespace> -- /bin/bashDấu -- dùng để tách các tùy chọn của kubectl khỏi lệnh sẽ chạy bên trong container.
Sau khi truy cập, có thể kiểm tra một số thông tin như:
envcat /etc/resolv.confls -laCách này hữu ích khi cần kiểm tra biến môi trường, file cấu hình, DNS hoặc khả năng kết nối từ chính góc nhìn của ứng dụng.
Không phải image nào cũng có sẵn sh hoặc bash. Với các image tối giản hoặc distroless, lệnh exec có thể không hoạt động; khi đó cần cân nhắc sử dụng kubectl debug hoặc một phương án debug phù hợp với image.
5. kubectl events - Xem các event mà Kubernetes ghi nhận
Events giúp phát hiện các vấn đề liên quan đến scheduling, container image, volume, probe và nhiều hoạt động khác trong cluster.
Xem Events trong một namespace:
kubectl events -n <namespace>Chỉ xem các cảnh báo:
kubectl events -n <namespace> --types=WarningXem Events của một Pod cụ thể:
kubectl events --for pod/<pod-name> -n <namespace>Khi Pod ở trạng thái Pending, ContainerCreating hoặc liên tục restart, nên kiểm tra Events trước khi xóa hoặc restart resource.
Ví dụ, Events có thể cho biết:
- Node không đủ CPU hoặc memory
- Không tìm thấy image trong registry
- Không thể mount PersistentVolume
- Readiness hoặc liveness probe thất bại
- Pod bị từ chối do taint hoặc thiếu toleration
Events thường giúp rút ngắn thời gian troubleshooting vì chúng chỉ ra sự kiện đã xảy ra thay vì buộc người vận hành phải đoán nguyên nhân.
6. kubectl top - Kiểm tra mức sử dụng CPU và Memory
kubectl top cung cấp số liệu sử dụng CPU và memory gần đây của Pod hoặc node. kubectl top chỉ cung cấp số liệu nhanh tại thời điểm kiểm tra. Với hệ thống production, metric này nên được đặt cạnh logs, events và lịch triển khai trong một quy trình giám sát Kubernetes Cluster để có đủ bối cảnh khi phân tích sự cố.
Kiểm tra mức sử dụng tài nguyên của các Pod:
kubectl top pods -n <namespace>Kiểm tra một Pod cụ thể theo từng container:
kubectl top pod <pod-name> -n <namespace> --containersKiểm tra mức sử dụng tài nguyên của các node:
kubectl top nodesCác lệnh này hữu ích khi kiểm tra:
- Pod sử dụng memory bất thường
- Node có dấu hiệu quá tải
- Container liên tục bị OOMKilled
- Mức sử dụng tài nguyên tăng sau một lần release
- Requests và limits đang được cấu hình chưa phù hợp
kubectl top cần Metrics Server hoạt động trong cluster. Nếu Metrics Server chưa được cài đặt hoặc không cung cấp dữ liệu, lệnh có thể trả về lỗi hoặc không có số liệu.
Các giá trị từ kubectl top phù hợp để quan sát nhanh và hỗ trợ quyết định autoscaling, nhưng không nhất thiết giống hoàn toàn với số liệu từ các công cụ giám sát hệ điều hành.
7. kubectl rollout status - Theo dõi quá trình triển khai Deployment
Việc áp dụng manifest mới chưa đồng nghĩa ứng dụng đã triển khai thành công. Các Pod mới vẫn cần được tạo, khởi động và đạt trạng thái Ready.
Theo dõi rollout của một Deployment:
kubectl rollout status deployment/<deployment-name> -n <namespace>Có thể giới hạn thời gian chờ:
kubectl rollout status deployment/<deployment-name> -n <namespace> --timeout=120sMặc định, lệnh sẽ tiếp tục theo dõi revision mới nhất cho đến khi rollout hoàn tất. Nếu lệnh bị treo hoặc kết thúc do timeout, nên kiểm tra lần lượt:
- Deployment. ReplicaSet
- Pod mới
- Events
- Application logs
Ví dụ:
kubectl get deployment -n <namespace>kubectl get pods -n <namespace>kubectl describe pod <pod-name> -n <namespace>kubectl logs <pod-name> -n <namespace>Lệnh rollout status cũng thường được dùng trong CI/CD pipeline để xác nhận Deployment đã đạt trạng thái sẵn sàng trước khi pipeline chuyển sang bước tiếp theo.
Với hệ thống có nhiều lần release, việc đối chiếu manifest, trạng thái rollout, events và logs giúp phát hiện lỗi triển khai Kubernetes theo đúng bối cảnh, thay vì chỉ nhìn vào trạng thái cuối cùng của Deployment.
8. kubectl rollout restart - Restart Deployment
Trong một số trường hợp, ứng dụng cần được khởi động lại dù container image và manifest không thay đổi. Khi đó, có thể dùng kubectl rollout restart thay vì xóa từng Pod thủ công.
Khởi động lại một Deployment:
kubectl rollout restart deployment/<deployment-name> -n <namespace>Sau đó theo dõi quá trình thay thế Pod:
kubectl rollout status deployment/<deployment-name> -n <namespace>Kubernetes sẽ thực hiện rolling restart theo chiến lược của Deployment. Cách này phù hợp khi cần làm mới các Pod hiện tại hoặc buộc ứng dụng đọc lại cấu hình đã được cập nhật thông qua cơ chế phù hợp.
Tuy nhiên, không nên dùng restart như phản xạ đầu tiên khi troubleshooting. Nếu container liên tục lỗi, restart chỉ có thể làm sự cố biến mất tạm thời mà không xử lý nguyên nhân gốc.
Trước khi restart trong môi trường production, nên kiểm tra:
- Deployment đang chạy trên bao nhiêu replica
- Pod Disruption Budget có cho phép thay thế Pod hay không
- Readiness probe đã cấu hình đúng chưa
- Ứng dụng có chịu được việc từng Pod lần lượt bị thay thế hay không
9. kubectl rollout history và undo - Theo dõi và khôi phục Deployment
Khi một bản release mới làm ứng dụng lỗi, lịch sử rollout giúp xác định các revision đã được triển khai và hỗ trợ rollback về phiên bản trước.
Xem lịch sử Deployment:
kubectl rollout history deployment/<deployment-name> -n <namespace>Xem chi tiết một revision:
kubectl rollout history deployment/<deployment-name> --revision=<revision> -n <namespace>Rollback về revision trước đó:
kubectl rollout undo deployment/<deployment-name> -n <namespace>Rollback về một revision cụ thể:
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision> -n <namespace>Sau khi rollback, nên theo dõi trạng thái Deployment:
kubectl rollout status deployment/<deployment-name> -n <namespace>Rollback là biện pháp khôi phục dịch vụ trong thời gian ngắn, nhưng không thay thế cho việc phân tích nguyên nhân gốc. Sau khi hệ thống ổn định, vẫn cần xác định bản release gặp lỗi ở image, cấu hình, dependency, database migration hay cơ chế health check.
Cũng cần lưu ý rằng rollback ứng dụng có thể không an toàn nếu bản release mới đã thực hiện thay đổi không tương thích với schema cơ sở dữ liệu.
10. kubectl get -o yaml - Kiểm tra cấu hình Kubernetes thực tế
Cấu hình trong file manifest có thể khác với cấu hình thực tế đang được lưu trong cluster. kubectl get -o yaml giúp kiểm tra object hiện tại mà Kubernetes API Server đang quản lý.
Xem cấu hình Deployment:
kubectl get deployment <deployment-name> -n <namespace> -o yamlXem cấu hình Pod:
kubectl get pod <pod-name> -n <namespace> -o yamlXem cấu hình Service:
kubectl get service <service-name> -n <namespace> -o yamlXem cấu hình PersistentVolumeClaim:
kubectl get pvc <pvc-name> -n <namespace> -o yamlOutput YAML hữu ích khi cần kiểm tra:
- Container image đang chạy
- Environment variables
- Labels và annotations
- Selector của Service
- Volume và volume mount
- Readiness, liveness, startup probe
- CPU, memory request và limit
- Replica count
- Tên ConfigMap hoặc Secret được tham chiếu
Lệnh này giúp xác định cluster thực sự đang chạy cấu hình nào, thay vì chỉ dựa trên file manifest mà người vận hành cho rằng đã được áp dụng.
Quy trình troubleshooting Kubernetes với kubectl
Giá trị của các lệnh trên không nằm ở việc ghi nhớ riêng lẻ từng câu lệnh, mà ở cách kết hợp chúng để trả lời đúng câu hỏi tại từng bước.
| Tình huống | Lệnh nên bắt đầu |
|---|---|
| Pod không chạy | kubectl get pods |
| Pod ở trạng thái Pending | kubectl describe pod và kubectl events |
| Container CrashLoopBackOff | kubectl logs --previous và kubectl describe pod |
| Deployment rollout bị treo | kubectl rollout status, kubectl get pods, kubectl describe |
| Pod hoặc node dùng nhiều tài nguyên | kubectl top pods hoặc kubectl top nodes |
| Cần xác nhận cấu hình thực tế | kubectl get -o yaml |
| Release mới gây lỗi | kubectl rollout history và kubectl rollout undo |
Một quy trình thực tế có thể thực hiện như sau:
- Chạy
kubectl getđể xác định resource gặp vấn đề - Dùng
kubectl describevàkubectl eventsđể kiểm tra lỗi từ Kubernetes - Dùng
kubectl logsđể kiểm tra lỗi ở tầng ứng dụng - Dùng
kubectl topđể xem xét CPU và memory - Dùng
kubectl get -o yamlđể đối chiếu cấu hình thực tế - Chỉ restart hoặc rollback khi đã có đủ thông tin và xác định được mục tiêu của thao tác
Trước khi chạy các lệnh có thể làm thay đổi trạng thái hệ thống như rollout restart hoặc rollout undo, nên kiểm tra context hiện tại để tránh thao tác nhầm cluster:
kubectl config current-contextKết luận
kubectl là công cụ quan trọng đối với các kỹ sư vận hành Kubernetes. Không cần ghi nhớ mọi lệnh, nhưng cần hiểu lệnh nào phù hợp với từng giai đoạn kiểm tra.
Các lệnh get, describe, logs, exec, events, top và rollout đã đáp ứng phần lớn nhu cầu kiểm tra, troubleshooting và quản lý Deployment hằng ngày.
Nguyên tắc nên giữ là: bắt đầu từ trạng thái hiện tại, thu thập thông tin, kiểm tra mối quan hệ giữa các resource rồi mới thực hiện thay đổi.
Troubleshooting Kubernetes hiệu quả không nằm ở việc chạy thật nhiều lệnh, mà là chạy đúng lệnh, đúng thời điểm và hiểu rõ tác động của từng thao tác. Với những đội ngũ muốn giảm phần việc quản trị hạ tầng Kubernetes, có thể tham khảo thêm dịch vụ Kubernetes Engine của Bizfly Cloud.
Nguồn: Bizfly Cloud chia sẻ




















