- vừa được xem lúc

10 Plugin kubectl giúp bạn trở thành kỹ sư Kubernetes giá trị nhất trong team

0 0 6

Người đăng: Kubernetes

Theo Viblo Asia

Kubernetes cực kỳ mạnh mẽ và sẽ dễ quản lý hơn nhiều khi bạn mở rộng kubectl bằng các plugin. Nhờ cộng đồng mã nguồn mở (và trình quản lý plugin Krew), bạn có thể thêm rất nhiều lệnh phụ mới vào kubectl giúp đơn giản hóa các tác vụ và quản lý cụm dễ dàng hơn.

Nhưng với hàng trăm plugin có sẵn, làm sao bạn biết nên thử cái nào?

Chúng tôi chia sẻ những plugin yêu thích nhất. Tất cả các plugin trong danh sách đều được duy trì thường xuyên và tương thích với các phiên bản Kubernetes mới (khoảng 1.30+).

Cùng khám phá nhé!

1. Preq – Phát hiện vấn đề về độ tin cậy sớm

preq (phát âm “preek”) là một công cụ phát hiện sự cố độ tin cậy, tìm kiếm các vấn đề phổ biến trong ứng dụng trước khi chúng gây ra sự cố. Nó dựa trên một danh mục mẫu lỗi do cộng đồng xây dựng (giống như cơ sở dữ liệu lỗ hổng, nhưng dành cho độ tin cậy).

Bạn có thể chạy kiểm tra trên cụm ứng dụng đang hoạt động và nhận cảnh báo về lỗi, cấu hình sai hoặc các mẫu không tốt đã được người khác phát hiện.

Tại sao nó lại hữu ích:

Nếu bạn từng bị sự cố sản xuất bất ngờ, preq có thể cứu bạn. Nó dò tìm các sự kiện và cấu hình khớp với mẫu lỗi đã biết.

Khi phát hiện vấn đề, nó cung cấp báo cáo chi tiết (kèm hướng xử lý) để bạn có thể hành động nhanh chóng. Nói ngắn gọn, preq mang kiến thức SRE đến tận tay bạn, giúp nhóm nhanh chóng phát hiện và giảm thiểu sự cố trước khi chúng lan rộng. Giống như có ai đó luôn kiểm tra cụm của bạn 24/7 (miễn phí, mã nguồn mở).

Cài đặt:

kubectl krew install preq

Mẹo: Cài đặt trình quản lý plugin Krew trước.

Ví dụ sử dụng:

Chạy preq trên một workload hoặc pod cụ thể. Ví dụ, kiểm tra độ tin cậy cho pod PostgreSQL:

kubectl preq pg17-postgresql-0

Plugin sẽ quét nhật ký và sự kiện của pod dựa trên thư viện các quy tắc Common Reliability Enumeration (CRE). Nếu phát hiện vấn đề, bạn sẽ nhận được báo cáo chi tiết kèm cách xử lý và tài liệu tham khảo.

Bạn cũng có thể lên lịch chạy preq như CronJob trong cụm để liên tục giám sát và gửi cảnh báo (ví dụ lên Slack) khi có sự cố. Tóm lại, preq giúp bạn chủ động phát hiện sự cố độ tin cậy trước khi chúng xảy ra.

2. Neat – Dọn dẹp YAML Output dài dòng

kubectl-neat giúp làm sạch đầu ra YAML của Kubernetes bằng cách loại bỏ những trường thừa thãi. Khi bạn chạy kubectl get ... -o yaml, thường có nhiều trường không cần thiết (status, managedFields, selfLink...) làm rối mắt. Neat sẽ lọc hết những trường đó và các giá trị mặc định, chỉ giữ lại phần spec chính, dễ đọc hơn nhiều.

Tại sao hữu ích:

Nếu bạn thấy mệt mỏi vì metadata tự động quá nhiều, plugin này dành cho bạn. Nó loại bỏ các trường như managedFields, status, creationTimestamp, resourceVersion và những phần lặp lại không cần thiết. Kết quả là bạn có một view gọn gàng chỉ với cấu hình thực sự của tài nguyên.

Rất hữu ích cho việc gỡ lỗi hoặc so sánh manifest – bạn chỉ thấy những trường bạn hoặc công cụ bạn định nghĩa, không bị Kubernetes thêm thừa vào. Tóm lại, neat giúp YAML gọn gàng và dễ hiểu hơn.

Cài đặt:

kubectl krew install neat

Ví dụ sử dụng:

Bạn có thể pipe đầu ra verbose vào neat, ví dụ:

kubectl get podnginx-abc123 -o yaml | kubectl neat

Lệnh trên sẽ xuất YAML của pod nginx-abc123 nhưng loại bỏ các trường thừa như owner references, timestamps, giá trị mặc định... Bạn có thể dễ dàng so sánh hoặc xem manifest đã được thu gọn này. Giúp tiết kiệm thời gian khi muốn hiểu nhanh cấu hình tài nguyên.

3. View-Secret – Giải mã Secrets ngay tức thì

Không cần phải giải mã Base64 thủ công nữa! kubectl-view-secret cho phép bạn xem nội dung Kubernetes Secrets dưới dạng văn bản rõ ràng. Thông thường, kubectl get secret my-secret -o yaml sẽ hiển thị dữ liệu dạng Base64. Với view-secret, dữ liệu này được giải mã tự động.

Tại sao hữu ích:

Cần kiểm tra nhanh giá trị trong Secret? Plugin này tiết kiệm rất nhiều thời gian. Thay vì copy chuỗi mã hóa rồi chạy lệnh giải mã Base64 từng trường, bạn chỉ cần một lệnh và xem được ngay giá trị thực. Rất tiện cho Secrets có nhiều khóa như TLS certs hoặc cấu hình app. Cũng giúp kiểm tra nhanh tính chính xác của dữ liệu (trong môi trường dev/test) mà không phải làm thủ công.

Cài đặt:

kubectl krew install view-secret

Ví dụ sử dụng:

Để xem secret tên my-secret trong namespace mặc định:

kubectl view-secret my-secret --all

Thêm flag --all để hiển thị tất cả các cặp key-value, ví dụ:

key1=supersecret
key2=topsecret

Bạn sẽ thấy giá trị thực ngay, không cần copy-paste hay decode. Lưu ý cẩn thận khi dùng vì sẽ lộ thông tin nhạy cảm ra terminal.

4. Tree – Hiển thị cấu trúc sở hữu tài nguyên

kubectl-tree hiển thị cấu trúc sở hữu tài nguyên trong cụm dưới dạng cây ASCII. Các đối tượng Kubernetes thường sở hữu hoặc kiểm soát các đối tượng khác (ví dụ Deployment sở hữu ReplicaSets, ReplicaSets sở hữu Pods). Plugin giúp bạn chọn một tài nguyên cấp cao rồi xem tất cả các tài nguyên con.

Tại sao hữu ích:

Giúp hiểu rõ các tài nguyên liên kết với nhau thế nào. Ví dụ với app phức tạp, bạn chạy kubectl tree trên Deployment hoặc CustomResource để thấy ngay chuỗi tài nguyên con. Rất hữu ích với CRDs khi mối quan hệ sở hữu không rõ ràng. Giúp dọn dẹp hoặc xử lý sự cố liên quan đến tài nguyên phụ thuộc. Nói tóm lại, tree cung cấp cái nhìn tổng quan trực quan về cách Kubernetes điều phối tài nguyên.

Cài đặt:

kubectl krew install tree

Ví dụ sử dụng:

Xem tài nguyên mà Deployment my-app sở hữu:

kubectl tree deploy my-app

Kết quả có thể là:

Deployment/my-app
└─ ReplicaSet/my-app-5fd76f7d5c ├─ Pod/my-app-5fd76f7d5c-abcde └─ Pod/my-app-5fd76f7d5c-fghij

Bạn cũng có thể dùng với các tài nguyên cấp cao khác như Ingress hoặc CRD.

5. Tail – Xem Log từ nhiều Pod cùng lúc

kubectl-tail (plugin tên tail trong Krew) cho phép bạn xem log thời gian thực từ nhiều pod cùng lúc. Nó giống như kubectl logs -f nhưng mạnh mẽ hơn, có thể tổng hợp log từ nhiều pod theo label hoặc selector. Dựa trên công cụ Kail, cung cấp chức năng giống Stern ngay trong kubectl.

Tại sao hữu ích:

Khi debug app phân tán trên nhiều pod, mở từng luồng log rất phiền phức. Plugin này cho phép bạn xem log từ nhiều pod dựa trên deployment, service, hoặc label selector. Log được tổng hợp và stream vào terminal, có thể lọc theo thời gian hoặc pod cụ thể. Giúp bạn có cái nhìn tổng thể về hoạt động app.

Cài đặt:

kubectl krew install tail

Ví dụ sử dụng:

  • Xem log tất cả pod trong namespace default:
kubectl tail --ns default
  • Xem log pods có label app=web trong 10 phút gần đây:
kubectl tail -l app=web --since=10m
  • Xem log hai pod cụ thể:
kubectl tail --pod web-abcde --pod web-fghij --since=1h

Log được phân màu theo pod giúp dễ phân biệt.

6. Who-Can – Điều tra quyền RBAC ai có thể làm gì

kubectl-who-can giúp bạn trả lời câu hỏi: “Ai có thể làm X trong cluster của tôi?” Đây là công cụ để điều tra quyền RBAC (Role-Based Access Control). Bạn chỉ cần nhập hành động (verb) và tài nguyên (resource), plugin sẽ liệt kê những user, service account hoặc role nào được phép thực hiện hành động đó. Nó thực chất gói gọn logic của lệnh kubectl auth can-i --list vào một câu hỏi dễ dùng hơn.

Tại sao hữu ích:

Quyền RBAC trong Kubernetes có thể rất phức tạp và khó kiểm soát. Khi bạn bị lỗi “permission denied” hoặc muốn audit quyền truy cập, plugin này cực kỳ giá trị. Thay vì dò tìm trong các ClusterRoleBindings dài dòng, bạn chỉ cần hỏi ví dụ “ai có quyền xóa pod trong namespace này?” và nhận được kết quả ngay. Đây cũng là công cụ giúp bạn xác định tài khoản nào cần được cấp quyền khi deploy thất bại do thiếu quyền. Nó cung cấp cái nhìn nhanh về ai được phép làm gì, tiết kiệm thời gian săn tìm trong YAML hay tài liệu.

Cài đặt:

kubectl krew install who-can

Ví dụ sử dụng:

Muốn biết ai có thể xóa pod trong namespace foo:

kubectl who-can delete pods --namespace foo

Plugin sẽ liệt kê các subject (người dùng, service account, roles) có quyền đó. Bạn cũng có thể hỏi rộng hơn:

kubectl who-can get secret/db-password

để xem ai có quyền đọc secret này, rất hữu ích cho audit bảo mật.

7. kubectx – Chuyển đổi Context nhanh chóng

kubectx là công cụ dòng lệnh rất phổ biến (và plugin kubectl) giúp bạn chuyển đổi context nhanh. Trong Kubernetes, context là sự kết hợp giữa cluster và user hiện đang dùng. Nếu bạn làm việc với nhiều cluster (dev, staging, prod...), kubectx giúp bạn chuyển đổi chỉ với một câu lệnh ngắn, thay vì gõ kubectl config use-context ... dài dòng.

Tại sao hữu ích:

Chạy nhầm lệnh ở cluster sai có thể gây hậu quả nghiêm trọng. kubectx giúp bạn liệt kê và chuyển đổi context nhanh như chớp, tăng hiệu suất làm việc khi quản lý nhiều cluster, đồng thời hỗ trợ tab-completion giúp gõ tên context nhanh hơn. Cả người mới và chuyên gia đều thích dùng vì đơn giản và tránh nhầm lẫn.

Cài đặt:

Dùng Krew:

kubectl krew install ctx

Ví dụ sử dụng:

Chuyển sang context prod-cluster:

kubectx prod-cluster

Chạy kubectx không đối số sẽ hiện danh sách context để bạn chọn tương tác. Có thể đặt alias hay rút gọn tên context để tiện hơn.

8. kubens – Chuyển Namespace nhanh

kubens là công cụ bổ trợ cho kubectx, giúp bạn chuyển đổi nhanh namespace trong context hiện tại. Thay vì gõ -n <namespace> mỗi lần hoặc chỉnh sửa file config, bạn chỉ cần chạy:

kubectl krew install ns

Tại sao hữu ích:

Namespace giúp chia tài nguyên trong cluster, nhưng việc gõ -n liên tục hoặc chỉnh config thủ công rất mệt. kubens giúp chuyển namespace nhanh và chính xác, tránh lỗi triển khai nhầm namespace mặc định. Kết hợp với kubectx, bạn có thể chuyển đổi cluster và namespace cực nhanh.

Cài đặt:

kubectl krew install ns

Ví dụ sử dụng:

Chuyển sang namespace kube-system:

kubens kube-system

Chạy kubens không đối số sẽ liệt kê namespace trong context hiện tại để bạn chọn.

9. Kube-Score – Kiểm tra (Lint) các Manifest Kubernetes

kube-score (plugin Krew là score) là công cụ phân tích tĩnh (static analysis) cho file YAML Kubernetes. Nó như một trình lint (kiểm tra lỗi, cảnh báo) giúp đánh giá file manifest (Deployment, Service, v.v) và gợi ý cải tiến.

Tại sao hữu ích:

Kubernetes chấp nhận nhiều config hợp lệ nhưng không chuẩn best practice (ví dụ thiếu giới hạn tài nguyên, kiểm tra sức khỏe chưa đúng, API deprecated...). kube-score cảnh báo các vấn đề đó trước khi bạn apply, giúp nâng cao chất lượng, độ tin cậy và bảo mật. Rất hữu ích khi làm code review hay chạy trong pipeline CI/CD.

Cài đặt:

kubectl krew install score

Ví dụ sử dụng:

Kiểm tra file:

kubectl score -f my-app.yaml

Kết quả sẽ liệt kê cảnh báo như:

  • [WARNING] Container không có giới hạn tài nguyên.
  • [CRITICAL] Service sử dụng targetPort không hợp lệ.

Bạn có thể quét thư mục chứa nhiều manifest cùng lúc.

10. Sniff – Bắt gói tin mạng từ Pod

kubectl sniff (hay ksniff) cho phép bạn chạy tcpdump ngay trên pod trong cluster Kubernetes và truyền gói tin về máy của bạn để phân tích bằng Wireshark hoặc công cụ tương tự.

Tại sao hữu ích:

Debug mạng trong Kubernetes phức tạp vì cần xem lưu lượng thật sự qua pod. sniff tự động triển khai container bắt gói tin bên cạnh pod và stream dữ liệu về máy bạn, giảm thao tác thủ công, không cần ssh vào node hay sửa pod. Giúp bạn kiểm tra lưu lượng, phát hiện lỗi mạng hoặc các hành vi bất thường.

Cài đặt:

kubectl krew install sniff

Bạn cần cài Wireshark trên máy để xem live hoặc mở file pcap sau.

Ví dụ sử dụng:

Bắt gói tin pod my-pod namespace default, container main-container:

kubectl sniff my-pod -n default -c main-container

Bạn có thể thêm filter ví dụ -f "port 80" hoặc xuất ra file pcap:

kubectl sniff my-pod -n default -o output.pcap

Mở file pcap trong Wireshark để phân tích.

Kết luận

Các plugin kubectl này có thể cải thiện đáng kể năng suất và khả năng của bạn với Kubernetes. Từ việc xác thực cấu hình của bạn đến gỡ lỗi các cụm trực tiếp, chúng lấp đầy những khoảng trống mà kubectl mặc định không bao phủ.

Tuyệt vời nhất là chúng tích hợp liền mạch – bạn gọi chúng như thể chúng là các lệnh kubectl gốc. Hãy tiếp tục và thử cài đặt một số plugin mà bạn quan tâm (thông qua Krew), và bạn sẽ tự hỏi làm thế nào bạn có thể quản lý Kubernetes mà không có chúng!

Cảm ơn các bạn đã theo dõi!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Deploying A Containerized Web Application On Kubernetes

1. Overview. Kubernetes is an open source project (available on kubernetes.io) which can run on many different environments, from laptops to high-availability multi-node clusters; from public clouds to on-premise deployments; from virtual machines to bare metal.

0 0 70

- vừa được xem lúc

Kubernetes - Học cách sử dụng Kubernetes Namespace cơ bản

Namespace trong Kubernetes là gì. Tại sao nên sử dụng namespace.

0 0 126

- vừa được xem lúc

[Kubernetes] Kubectl và các command cơ bản

Mở đầu. Kubectl là công cụ quản trị Kubernetes thông qua giao diện dòng lệnh, cho phép bạn thực thi các câu lệnh trong Kubernetes cluster.

0 0 69

- vừa được xem lúc

Triển khai EFK Stack trên Kubernetes

EFK stack on K8S. Giới thiệu. Một hệ thống có thể chạy nhiều dịch vụ hoặc ứng dụng khác nhau, vì vậy việc. theo dõi hệ thống là vô cùng cần thiết.

0 0 83

- vừa được xem lúc

Thực hành Kubernetes (K8S) bằng cách sử dụng lệnh Command

Bài hướng dẫn hôm nay sẽ hướng dẫn sử dụng K8S bằng cách sử dụng câu lệnh thay vì UI trên web. Có 2 lựa chọn để thực hiện:. . Sử dụng Cloud Shell.

0 0 66

- vừa được xem lúc

Kubernetes best practices - Liveness và Readiness Health checks

Mở đầu. Kubernetes cung cấp cho bạn một framework để chạy các hệ phân tán một cách mạnh mẽ.

0 0 64