Kubectl là công cụ dòng lệnh chính thức để giao tiếp và quản lý cụm Kubernetes. Thực tế vận hành hệ thống cho thấy, việc quản trị một cluster phức tạp không thể tách rời khả năng tương tác trực tiếp với API Server. Từ kinh nghiệm triển khai hạ tầng, mình nhận thấy Kubectl không chỉ là một công cụ thực thi lệnh mà còn là phương tiện kỹ thuật để hiện thực hóa tư duy khai báo trạng thái mong muốn. Bài viết này sẽ hướng dẫn chi tiết từ cài đặt đến các lệnh nâng cao để làm chủ môi trường Kubernetes.
Những điểm chính
Đối với mình, kubectl không chỉ là công cụ dòng lệnh mà còn là cầu nối giúp bạn tương tác trực tiếp với Kubernetes để quản lý và vận hành hệ thống container một cách hiệu quả. Để giúp bạn hiểu rõ hơn về kubectl trong thực tế sử dụng, bài viết dưới đây sẽ cung cấp các thông tin gồm:
- Khái niệm: Hiểu rõ kubectl là công cụ dòng lệnh (CLI) cốt lõi, giúp bạn quản lý và tương tác mượt mà với cụm Kubernetes.
- Vai trò: Nắm được các vai trò chính như triển khai ứng dụng, quản lý tài nguyên và tương tác với API, giúp nhận biết kubectl là công cụ thiết yếu để kiểm soát toàn bộ cluster.
- Cách thức hoạt động: Biết được cơ chế hoạt động thông qua việc gửi yêu cầu đến API Server, giúp hiểu cách các lệnh đơn giản được thực thi và điều phối trong cụm.
- Hướng dẫn cài đặt kubectl trên Linux: Nắm vững các bước cài đặt kubectl trên Linux (tải binary, cấp quyền thực thi, chuyển file vào PATH và xác nhận hoạt động), giúp bạn chuẩn bị môi trường sẵn sàng để sử dụng.
- Cấu hình kubeconfig cho kubectl: Biết cách cấu hình
kubeconfigđể kết nối với cụm Kubernetes (Clusters, Users, Contexts), giúp bạn quản lý và chuyển đổi giữa các cụm một cách hiệu quả. - Các lệnh cơ bản và phổ biến: Nắm được các lệnh thiết yếu để quản lý trạng thái cụm, tài nguyên và thực hiện gỡ lỗi, giúp trang bị bộ công cụ cần thiết cho các tác vụ hàng ngày.
- Kubectl Cheatsheet: Có được một bản tóm tắt các lệnh hữu ích, giúp tra cứu nhanh và áp dụng vào thực tế để quản lý, triển khai và gỡ lỗi một cách hiệu quả.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến kubectl.
Kubectl là gì?
Kubectl là công cụ dòng lệnh (CLI) cốt lõi, giúp bạn quản lý và tương tác mượt mà với cụm Kubernetes. Kubectl cho phép triển khai ứng dụng nhanh chóng, theo dõi tài nguyên chi tiết, đồng thời điều khiển toàn bộ cluster qua các lệnh gửi thẳng đến Kubernetes API.
Nhờ kubectl, nhà phát triển lẫn quản trị viên dễ dàng kiểm soát môi trường Kubernetes, từ việc tạo mới, cập nhật hay xóa ứng dụng container, đến việc xem xét log và nhiều thao tác khác một cách trực quan. Công cụ này đóng vai trò như một giao diện mạnh mẽ, biến các lệnh đơn giản thành hành động thực thi hiệu quả trên hệ thống container hóa.

Vai trò của Kubectl
Kubectl mang đến những chức năng thiết yếu để kiểm soát cluster Kubernetes một cách linh hoạt và hiệu quả. Dưới đây là các vai trò nổi bật nhất:
- Triển khai ứng dụng: Áp dụng các định nghĩa tài nguyên như Pods hay Deployments trực tiếp lên cluster.
- Quản lý tài nguyên: Giám sát tình trạng, chỉnh sửa cấu hình cho các đối tượng như Services hoặc ConfigMaps.
- Xem thông tin: Truy xuất dữ liệu cụ thể về thành phần cluster và kiểm tra nhật ký từ container.
- Tương tác với API: Gửi lệnh trực tiếp tới Kubernetes API Server nhằm thực thi mọi thao tác cần thiết.

Cách thức hoạt động của Kubectl
Về bản chất, Kubectl hoạt động như một HTTP Client. Quy trình thực thi một lệnh được thay đổi trên cluster diễn ra theo 3 bước sau:
1. Giai đoạn giao tiếp và xác thực
Khi bạn nhập một lệnh (ví dụ: kubectl apply), Kubectl sẽ tra cứu tệp cấu hình kubeconfig để xác định cụm mục tiêu và thông tin danh tính. Sau đó, nó đóng gói yêu cầu thành một RESTful request và gửi đến Kubernetes API Server qua giao thức HTTPS.
2. Giai đoạn xử lý tại Control Plane
API Server là nơi tiếp nhận yêu cầu. Tại đây, hệ thống thực hiện:
- Authentication & Authorization: Kiểm tra xem bạn là ai và bạn có quyền thực hiện hành động đó hay không.
- Validation: Đảm bảo tệp YAML hoặc lệnh bạn gửi đúng cú pháp kỹ thuật.
- Persistence: Nếu lệnh hợp lệ, trạng thái mong muốn mới sẽ được ghi lại vào cơ sở dữ liệu etcd.
3. Giai đoạn điều phối và thực thi
Sau khi API Server cập nhật trạng thái mới, các bộ điều khiển sẽ phát hiện sự khác biệt giữa trạng thái hiện tại và trạng thái mong muốn. API Server sau đó sẽ truyền chỉ thị tới Kubelet. Kubelet sẽ trực tiếp làm việc với Container Runtime (như Docker hoặc containerd) để tạo, xóa hoặc cập nhật các container theo đúng yêu cầu ban đầu của bạn qua Kubectl.

Hướng dẫn cài đặt Kubectl trên Linux
Phương pháp tải trực tiếp binary từ Google đảm bảo phiên bản chính xác và tương thích cao. Các bước thực hiện như sau:
- Bước 1: Bạn sử dụng cURL để lấy phiên bản ổn định mới nhất hoặc phiên bản cụ thể như v1.29.0.
curl -LO "https://dl.k8s.io/release/v1.29.0/bin/linux/amd64/kubectl"
Lưu ý
Bạn cần kiểm tra phiên bản ổn định mới nhất trên trang chính thức Kubernetes.
- Bước 2: Bạn cần cấp quyền thực thi bằng lệnh”
chmod +x kubectl- Bước 3: Bạn cần chuyển file vào thư mục trong biến môi trường $PATH, ví dụ /usr/local/bin, để gọi lệnh từ mọi nơi:
sudo mv kubectl /usr/local/bin/- Bước 4: Bạn cần xác nhận kubectl hoạt động đúng bằng lệnh:
kubectl version --client
Cấu hình kubeconfig cho kubectl
Kubectl yêu cầu tệp cấu hình kubeconfig để kết nối với cụm Kubernetes. Tệp kubeconfig chứa thông tin sau:
- Clusters: Địa chỉ API server của cụm.
- Users: Thông tin xác thực bao gồm chứng chỉ, token.
- Contexts: Kết nối một user với một cluster cụ thể.

Tệp kubeconfig mặc định nằm tại $HOME/.kube/config. Khi tạo cụm qua EKS, AKS, GKE hoặc Kubeadm, tệp kubeconfig thường được tạo tự động hoặc tải về. Để kiểm tra cấu hình hiện tại thì bạn có thể dùng lệnh:
kubectl config viewQuản lý nhiều cụm đòi hỏi chuyển đổi context. Bạo có thể liệt kê tất cả contexts bằng lệnh:
kubectl config get-contextsSau đó bạn có thể dùng lệnh sau để chuyển sang context cụ thể:
kubectl config use-context <TÊN_CONTEXT>Tệp kubeconfig là chốt chặn bảo mật cốt lõi để kiểm soát quyền truy cập vào cụm máy chủ. Dựa trên kinh nghiệm vận hành thực tế của mình, việc lạm quyền Cluster-admin cho mọi tác vụ là một thiếu sót về an ninh.
Chiến lược tối ưu là phân tách rõ ràng các Contexts để điều phối luồng công việc giữa môi trường Staging và Production. Việc áp dụng RBAC tích hợp trong kubeconfig giúp giảm thiểu rủi ro thực thi lệnh nhầm hoặc rò rỉ thông tin xác thực, đảm bảo hệ thống Kubernetes trên hạ tầng Vietnix luôn vận hành trong khuôn khổ an toàn và có tính tổ chức cao.
Những lệnh Kubectl cơ bản và phổ biến
1. Lệnh quản lý trạng thái cụm
| Lệnh | Mô tả |
| kubectl cluster-info | Hiển thị thông tin endpoint của Master/Control Plane. |
| kubectl get nodes | Liệt kê trạng thái của tất cả các Node trong cụm. |
| kubectl get all | Liệt kê các tài nguyên cơ bản (Pods, Services, Deployments,…) trong namespace hiện tại. |
2. Lệnh quản lý tài nguyên
Kubernetes sử dụng các tệp YAML/JSON để định nghĩa tài nguyên:
| Lệnh | Mô tả |
| kubectl apply -f <file .yaml> | Tạo hoặc cập nhật tài nguyên từ tệp. |
| kubectl create -f <file .yaml> | Chỉ tạo tài nguyên mới. |
| kubectl delete -f <file .yaml> | Xóa tài nguyên được định nghĩa trong tệp. |
| kubectl delete pod <tên_pod> | Xóa một Pod cụ thể theo tên. |
| kubectl describe pod <tên_pod> | Hiển thị thông tin chi tiết về trạng thái, sự kiện, cấu hình,… của tài nguyên. |
3. Lệnh gỡ lỗi
| Lệnh | Mô tả |
| kubectl logs <tên_pod> | Hiển thị logs của container trong Pod. |
| kubectl logs -f <tên_pod> | Xem logs theo dõi trực tiếp. |
| kubectl exec -it <tên_pod> — /bin/bash | Mở một shell tương tác bên trong container của Pod. |
| kubectl port-forward <tên_pod> 8080:80 | Chuyển tiếp cổng từ cụm sang máy cục bộ, rất hữu ích khi kiểm tra Service nội bộ. |
4. Lệnh mở rộng
| Lệnh | Mô tả |
| kubectl scale deployment <tên_deploy> –replicas=5 | Thay đổi số lượng bản sao của Deployment thành 5. |
Kubectl Cheatsheet: Công cụ quản lý Kubernetes
Cheatsheet tổng hợp các lệnh cơ bản để vận hành cluster Kubernetes dành cho bạn như sau:
1. Cấu hình và bối cảnh
| Lệnh | Mô tả |
| kubectl config view | Xem cấu hình kubeconfig hiện tại. |
| kubectl config get-contexts | Liệt kê tất cả các bối cảnh đã định cấu hình. |
| kubectl config current-context | Xem bối cảnh đang được sử dụng. |
| kubectl config use-context | Chuyển sang một bối cảnh khác. |
| kubectl config set-context –current –namespace= | Đặt namespace mặc định cho bối cảnh hiện tại. |
2. Quản lý tài nguyên
Các lệnh cơ bản để làm việc với tài nguyên Kubernetes:
| Lệnh | Mô tả |
| kubectl get all | Liệt kê tất cả các tài nguyên cơ bản (pods, services, deployments) trong namespace hiện tại. |
| kubectl get pods -n | Liệt kê pods trong namespace cụ thể. |
| kubectl get pods -o wide | Liệt kê pods kèm thông tin chi tiết (IP node, IP pod). |
| kubectl describe pod | Hiển thị thông tin chi tiết về một pod, bao gồm các sự kiện. |
| kubectl apply -f | Áp dụng/tạo tài nguyên từ tệp YAML. |
| kubectl delete -f | Xóa tài nguyên được định nghĩa trong tệp YAML. |
| kubectl delete pod | Xóa một pod cụ thể. |
| kubectl edit <LoạiResource>/<TênResource> | Chỉnh sửa trực tiếp định nghĩa tài nguyên bằng trình soạn thảo mặc định. |
3. Kiểm tra và gỡ lỗi
Các lệnh hỗ trợ xem trạng thái và nhật ký khi gặp vấn đề:
| Lệnh | Mô tả |
| kubectl logs <TênPod> | Xem nhật ký của pod (chỉ container đầu tiên). |
| kubectl logs -f <TênPod> | Theo dõi nhật ký của pod. |
| kubectl logs <TênPod> -c <TênContainer> | Xem nhật ký của container cụ thể trong pod. |
| LệnhMô tảkubectl logs kubectl logs -f kubectl logs -c kubectl exec -it — /bin/bash | Mở phiên shell tương tác bên trong pod. Thay /bin/bash bằng /bin/sh nếu bash không có sẵn. |
| kubectl port-forward <TênPod> 8080:80 | Chuyển tiếp cổng 80 của pod đến cổng 8080 trên máy cục bộ. |
| kubectl top node | Hiển thị mức sử dụng CPU/Memory của các Node (Yêu cầu Metrics Server). |
| kubectl top pod | Hiển thị mức sử dụng CPU/Memory của các Pod (Yêu cầu Metrics Server). |
4. Triển khai và cập nhật
Các lệnh quản lý Deployment để mở rộng ứng dụng:
| Lệnh | Mô tả |
| kubectl scale deployment <TênDeployment> –replicas=<SốLượng> | Điều chỉnh số lượng bản sao của Deployment. |
| kubectl rollout status deployment/<TênDeployment> | Kiểm tra trạng thái triển khai hiện tại. |
| kubectl rollout history deployment/<TênDeployment> | Xem lịch sử các lần triển khai. |
| kubectl rollout undo deployment/<TênDeployment> –to-revision=<SốRevision> | Quay lại phiên bản trước. |
| kubectl set image deployment/<TênDeployment> <TênContainer>=<ImageMới>:<Tag> | Cập nhật image của container trong Deployment. |
5. Sao chép tệp
| Lệnh | Mô tả |
| kubectl cp <TệpCụcBộ> <TênPod>:/<ĐườngDẫnTrongPod> | Sao chép tệp từ máy cục bộ vào pod. |
| kubectl cp <TênPod>:/<ĐườngDẫnTrongPod> <TệpCụcBộ> | Sao chép tệp từ pod về máy cục bộ. |
6. Tùy chỉnh (Aliases)
Bạn có thể thêm aliases vào tệp ~/.bashrc hoặc ~/.zshrc trên Linux để rút gọn lệnh:
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgn='kubectl get nodes'
alias kga='kubectl get all'alias kx='kubectl exec -it' # Dùng: kx <pod_name> -- bash
alias kdel='kubectl delete' Sau đó, bạn cần chạy source ~/.bashrc (hoặc .zshrc) sau khi thêm để áp dụng.
Câu hỏi thường gặp
Làm thế nào để cài đặt kubectl trên Windows?
Bạn cần tTải binary kubectl từ trang chính thức Kubernetes tại https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/. Giải nén file, thêm đường dẫn vào biến môi trường PATH, sau đó kiểm tra bằng lệnh kubectl version –client.
kubectl apply dùng để làm gì?
Lệnh kubectl apply -f áp dụng hoặc cập nhật tài nguyên Kubernetes từ file YAML hoặc JSON, hỗ trợ declarative management để cluster tự động điều chỉnh theo định nghĩa.
Các lệnh kubectl cơ bản là gì?
Các lệnh phổ biến bao gồm kubectl get, kubectl apply, kubectl delete, kubectl describe, và kubectl logs. Sử dụng kubectl –help để liệt kê đầy đủ.
kubectl exec hoạt động ra sao?
Việc sử dụng kubectl exec -it — /bin/bash để mở shell tương tác bên trong pod, giúp debug hoặc chạy lệnh trực tiếp trên container.
Cách cài đặt kubectl tổng quát?
Trên Linux/macOS, tải binary qua curl và thêm vào PATH. Trên Windows, bạn dùng Chocolatey (choco install kubernetes-cli) hoặc tải thủ công. Luôn kiểm tra phiên bản tương thích với cluster bằng kubectl version.
Kubectl chính là công cụ không thể thiếu để quản lý và triển khai ứng dụng trên Kubernetes một cách hiệu quả. Với khả năng kiểm soát toàn diện từ triển khai, debug đến scaling, Kubectl giúp mọi lập trình viên và quản trị viên vận hành cluster mượt mà. Cảm ơn bạn đã theo dõi bài viết!




