10 lệnh kubectl hữu ích cho các tác vụ vận hành Kubernetes hàng ngày

1373
16-09-2026
10 lệnh kubectl hữu ích cho các tác vụ vận hành Kubernetes hàng ngày

Kubernetes cung cấp công cụ command-line kubectl để tương tác với cluster. Trong vận hành Kubernetes hằng ngày, kubectl được sử dụng thường xuyên để kiểm tra trạng thái ứng dụng, xử lý Pod lỗi, xem logs, theo dõi tài nguyên và xác thực deployment. Mặc dù có rất nhiều lệnh kubectl, một nhóm lệnh cơ bản đã đáp ứng phần lớn nhu cầu vận hành và troubleshooting.

Bài viết giới thiệu 10 lệnh kubectl hữu ích giúp các tác vụ vận hành và xử lý sự cố Kubernetes nhanh chóng, có hệ thống hơn.

1. kubectl get - Kiểm tra trạng thái hiện tại

kubectl get là một trong những lệnh được sử dụng thường xuyên nhất trong Kubernetes.

Liệt kê Pods trong một namespace:

kubectl get pods -n

Lệnh này giúp nhanh chóng kiểm tra trạng thái ứng dụng như Running, Pending, CrashLoopBackOff, ImagePullBackOff, Completed hoặc Error.

Để xem thêm thông tin:

kubectl get pods -n -o wide

Kết quả wide cung cấp thêm Pod IP và worker node mà Pod đang chạy.

Đây thường là lệnh đầu tiên khi kiểm tra sự cố ứng dụng.

2. kubectl describe - Hiểu nguyên nhân sự cố

kubectl get cho biết điều gì đang xảy ra, còn kubectl describe giúp hiểu tại sao nó xảy ra.

Kiểm tra một Pod:

kubectl describe pod -n

Lệnh này cung cấp thông tin chi tiết về container, image, volume, resource, health probes, node và đặc biệt là Events.

Một số lỗi thường gặp:

  • Failed to pull image
  • Back-off restarting failed container
  • Readiness probe failed
  • FailedScheduling
  • FailedMount

Các thông báo này thường giúp xác định bước troubleshooting tiếp theo.

Quy trình đơn giản:

kubectl get

Xác định resource gặp sự cố

kubectl describe

3. kubectl logs - Xem Application Logs

Kubernetes có thể cho biết container đang gặp lỗi, nhưng application logs thường giúp xác định nguyên nhân.

Xem logs của một Pod:

kubectl logs -n

Nếu Pod có nhiều containers:

kubectl logs -c -n

Theo dõi logs theo thời gian thực:

kubectl logs -f -n

Khi troubleshooting CrashLoopBackOff, có thể xem logs của container trước đó:

kubectl logs --previous -n

--previous giúp xem logs của container instance trước khi restart, từ đó xác định lỗi ứng dụng gây ra việc restart.

4. kubectl exec - Truy cập container đang chạy

Đôi khi log của ứng dụng không cung cấp đủ thông tin. Chúng ta có thể cần kiểm tra trực tiếp bên trong container, chẳng hạn như file cấu hình, biến môi trường, DNS hoặc khả năng kết nối.

Nếu container có Bash:

kubectl exec -it -n -- /bin/bash

Với các image tối giản, có thể sử dụng sh:

kubectl exec -it -n -- /bin/sh

Sau khi truy cập, có thể kiểm tra môi trường từ góc nhìn của ứng dụng, ví dụ:

env

hoặc:

cat /etc/resolv.conf

Cách này đặc biệt hữu ích khi ứng dụng hoạt động bình thường bên ngoài Kubernetes nhưng gặp vấn đề về kết nối hoặc cấu hình khi chạy trong cluster.

5. kubectl events - Xem các event mà Kubernetes ghi nhận

Events là một trong những nguồn thông tin hữu ích khi troubleshooting Kubernetes.

Xem events trong một namespace:

kubectl events -n

Chỉ xem các cảnh báo:

kubectl events -n --types=Warning

Events có thể cho biết các vấn đề liên quan đến scheduling, storage, container image, health probe và nhiều hoạt động khác của Kubernetes.

Với một Pod cụ thể:

kubectl events --for pod/ -n

Thay vì ngay lập tức restart resource, kiểm tra Events trước có thể giúp rút ngắn đáng kể thời gian troubleshooting.

6. kubectl top - Kiểm tra mức sử dụng CPU và Memory

Mức tiêu thụ tài nguyên là một yếu tố quan trọng trong vận hành Kubernetes.

Kiểm tra mức sử dụng CPU và memory của Pod:

kubectl top pods -n

Kiểm tra mức sử dụng tài nguyên của worker node:

kubectl top nodes

Các lệnh này cung cấp nhanh thông tin về mức sử dụng CPU và memory hiện tại, khi Kubernetes Metrics API khả dụng.

Điều này hữu ích khi kiểm tra resource pressure, vấn đề hiệu năng hoặc mức sử dụng memory bất thường.

Ví dụ, nếu một Pod liên tục restart và memory usage gần đạt giới hạn được cấu hình, resource configuration là một yếu tố cần được kiểm tra.

7. kubectl rollout status - Theo dõi quá trình triển khai Deployment

Việc áp dụng manifest Kubernetes mới không đồng nghĩa ứng dụng đã được deploy thành công. Các Pod mới cũng cần khởi động và đạt trạng thái Ready.

Theo dõi rollout của một Deployment:

kubectl rollout status deployment/ -n

Nếu rollout hoàn tất, Kubernetes xác nhận Deployment đã được triển khai thành công. Nếu lệnh tiếp tục chờ, ReplicaSet hoặc Pod mới có thể đang gặp vấn đề.

Khi đó, có thể lần lượt kiểm tra:

Deployment → ReplicaSet → Pod → Events → Application

Lệnh này cũng hữu ích trong CI/CD pipeline, giúp xác nhận Deployment thực sự đã đạt trạng thái hoạt động bình thường.

8. kubectl rollout restart - Restart Deployment

Trong một số trường hợp, ứng dụng cần được restart mà không thay đổi container image hoặc cấu hình Deployment.

Thay vì xóa từng Pod thủ công, có thể thực hiện rolling restart:

kubectl rollout restart deployment/ -n

Kubernetes sẽ lần lượt thay thế các Pod hiện tại theo chiến lược của Deployment.

Cách này phù hợp hơn so với việc xóa từng Pod khi mục tiêu là restart toàn bộ workload.

Tuy nhiên, không nên mặc định dùng restart để troubleshooting. Nếu ứng dụng liên tục gặp lỗi, restart có thể chỉ tạm thời che giấu vấn đề mà không giải quyết nguyên nhân gốc.

9. kubectl rollout history và undo - Theo dõi và khôi phục Deployment

Lịch sử Deployment đặc biệt hữu ích khi một bản release mới gây ra vấn đề.

Xem các revision trước đó:

kubectl rollout history deployment/ -n

Nếu phiên bản mới không ổn định, có thể rollback:

kubectl rollout undo deployment/ -n

Hoặc rollback về một revision cụ thể:

kubectl rollout undo deployment/ --to-revision= -n

Rollback là một cơ chế quan trọng để khôi phục dịch vụ, giúp đưa hệ thống về phiên bản trước trong khi điều tra release mới.

Tuy nhiên, rollback không thay thế cho phân tích nguyên nhân gốc (root-cause analysis). Sau khi xử lý sự cố trước mắt, vẫn cần xác định nguyên nhân khiến phiên bản mới gặp lỗi.

10. kubectl get -o yaml - Kiểm tra cấu hình Kubernetes thực tế

Đôi khi cấu hình chúng ta mong đợi và cấu hình thực tế được lưu trong Kubernetes có thể khác nhau.

Kiểm tra đầy đủ cấu hình của Deployment:

kubectl get deployment -n -o yaml

Có thể áp dụng tương tự với các resource khác:

kubectl get pod -n -o yaml

kubectl get service -n -o yaml

kubectl get pvc -n -o yaml

Output YAML hữu ích để kiểm tra label, annotation, image, environment, volume, selector, probe, resource limit và các thuộc tính khác.

Cách này giúp xác định Kubernetes thực sự đang chạy với cấu hình nào, thay vì chỉ dựa trên cấu hình mà chúng ta cho rằng hệ thống đang sử dụng.

Xây dựng quy trình Troubleshooting đơn giản

Giá trị thực sự của các lệnh này không nằm ở việc ghi nhớ từng lệnh riêng lẻ, mà ở cách kết hợp chúng trong quá trình troubleshooting.

Một quy trình thực tế có thể như sau:

kubectl get

Xác định resource gặp vấn đề

kubectl describe

Kiểm tra Events

kubectl logs

Nếu container đã restart → kiểm tra log trước đó

kubectl top

Kiểm tra cấu hình YAML

Xác định nguyên nhân gốc

Cách tiếp cận này thường hiệu quả hơn việc ngẫu nhiên restart Pod hoặc thay đổi cấu hình.

Mỗi lệnh nên giúp trả lời một câu hỏi cụ thể và định hướng bước kiểm tra tiếp theo.

Kết luận

kubectl là một trong những công cụ quan trọng đối với kỹ sư làm việc với Kubernetes.

Không cần ghi nhớ mọi lệnh. Quan trọng hơn là hiểu lệnh nào cung cấp thông tin cần thiết ở từng giai đoạn troubleshooting.

Các lệnh như get, describe, logs, exec, events, top và rollout cung cấp nền tảng tốt cho các hoạt động Kubernetes hằng ngày.

Nguyên tắc cốt lõi là:

Bắt đầu từ trạng thái hiện tại, thu thập thông tin, theo dõi 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.

SHARE