--- title: kubectl Cheat Sheet reviewers: - ngtuna content_template: templates/concept card: name: reference weight: 30 --- {{% capture overview %}} Xem thêm: [Kubectl Overview](/docs/reference/kubectl/overview/) và [JsonPath Guide](/docs/reference/kubectl/jsonpath). Trang này là trang tổng quan của lệnh `kubectl`. {{% /capture %}} {{% capture body %}} # kubectl - Cheat Sheet ## Kubectl Autocomplete ### BASH ```bash source <(kubectl completion bash) # thiết lập autocomplete trong bash vào shell hiện tại, gói bash-completion nên được cài đặt trước tiên echo "source <(kubectl completion bash)" >> ~/.bashrc # thêm vĩnh viễn autocomplete vào trong bash shell ``` Bạn có thể dùng một alias cho `kubectl` cũng hoạt động với completion: ```bash alias k=kubectl complete -F __start_kubectl k ``` ### ZSH ```bash source <(kubectl completion zsh) # thiết lập autocomplete trong zsh vào shell hiện tại echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc # thêm vĩnh viễn autocomplete vào trong zsh shell ``` ## Ngữ cảnh và cấu hình kubectl Thiết lập cụm Kubernetes nào mà `kubectl` sẽ giao tiếp với và sửa đổi thông tin cấu hình. Xem tài liệu [Xác thực giữa các cụm với kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) để biết thông tin chi tiết của tệp cấu hình. ```bash kubectl config view # Hiển thị các thiết lập kubeconfig đã được merged # sử dụng nhiều tệp kubeconfig cùng một lúc và xem cấu hình hợp nhất KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view # lấy mật khẩu cho người dùng e2e kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' kubectl config view -o jsonpath='{.users[].name}' # hiển thị người dùng đầu tiên kubectl config view -o jsonpath='{.users[*].name}' # lấy danh sách người dùng kubectl config get-contexts # hiển thị danh sách các ngữ cảnh kubectl config current-context # hiển thị ngữ cảnh hiện tại kubectl config use-context my-cluster-name # thiết lập ngữ cảnh mặc định cho my-cluster-name # thêm một cụm mới vào kubeconf hỗ trợ xác thực cơ bản kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword # lưu vĩnh viễn namespace cho tất cả các lệnh kubectl tiếp theo trong ngữ cảnh đó kubectl config set-context --current --namespace=ggckad-s2 # thiết lập ngữ cảnh sử dụng tên người dùng và namespace cụ thể kubectl config set-context gce --user=cluster-admin --namespace=foo \ && kubectl config use-context gce kubectl config unset users.foo # xóa người dùng foo ``` ## Apply `apply` quản lý các ứng dụng thông qua các tệp định nghĩa tài nguyên Kubernetes. Nó tạo và cập nhật các tài nguyên trong một cụm thông qua việc chạy `kubectl apply`. Đây là cách được đề xuất để quản lý các ứng dụng Kubernetes trong thực tế. Xem thêm [Kubectl Book](https://kubectl.docs.kubernetes.io). ## Tạo một đối tượng Kubernetes manifests có thể được định nghĩa trong tệp json hoặc yaml. Phần mở rộng `.yaml`, `.yml`, và `.json` có thể được dùng. ```bash kubectl apply -f ./my-manifest.yaml # tạo tài nguyên kubectl apply -f ./my1.yaml -f ./my2.yaml # tạo từ nhiều tệp kubectl apply -f ./dir # tạo tài nguyên từ tất cả các tệp manifest trong thư mục dir kubectl apply -f https://git.io/vPieo # tạo tài nguyên từ url kubectl create deployment nginx --image=nginx # tạo một deployment nginx kubectl explain pods,svc # lấy thông tin pod và service manifest # Tạo nhiều đối tượng YAML từ stdin cat < pod.yaml kubectl attach my-pod -i # Đính kèm với container đang chạy kubectl port-forward my-pod 5000:6000 # Lắng nghe trên cổng 5000 của máy local và chuyển tiếp sang cổng 6000 trên pod my-pod kubectl exec my-pod -- ls / # Chạy lệnh trong một pod (trường hợp 1 container) kubectl exec my-pod -c my-container -- ls / # Chạy lệnh trong pod (trường hợp nhiều container) kubectl top pod POD_NAME --containers # Hiển thị số liệu của pod và container chạy trong nó ``` ## Tương tác với các nodes và cụm ```bash kubectl cordon my-node # Đánh dấu my-node là không thể lập lịch kubectl drain my-node # Gỡ my-node ra khỏi cụm để chuẩn bị cho việc bảo trì kubectl uncordon my-node # Đánh dấu my-node có thể lập lịch trở lại kubectl top node my-node # Hiển thị số liệu của node kubectl cluster-info # Hiển thị địa chỉ master và các services kubectl cluster-info dump # Kết xuất trạng thái hiện tại của cụm ra ngoài stdout kubectl cluster-info dump --output-directory=/path/to/cluster-state # Kết xuất trạng thái hiện tại của cụm vào /path/to/cluster-state kubectl taint nodes foo dedicated=special-user:NoSchedule ``` ### Các loại tài nguyên Liệt kê tất cả các loại tài nguyên được hỗ trợ cùng với tên viết tắt của chúng, [API group](/docs/concepts/overview/kubernetes-api/#api-groups), cho dù chúng là [namespaced](/docs/concepts/overview/working-with-objects/namespaces), và [Kind](/docs/concepts/overview/working-with-objects/kubernetes-objects): ```bash kubectl api-resources ``` Các hoạt động khác để khám phá các tài nguyên API: ```bash kubectl api-resources --namespaced=true # Tất cả các tài nguyên được đặt tên kubectl api-resources --namespaced=false # Tất cả các tài nguyên không được đặt tên kubectl api-resources -o name # Tất cả các tài nguyên với đầu ra đơn giản (chỉ gồm tên tài nguyên) kubectl api-resources -o wide # Tất cả các tài nguyên với đầu ra mở rộng kubectl api-resources --verbs=list,get # Tất cả các tài nguyên hỗ trợ yêu cầu "list" và "get" kubectl api-resources --api-group=extensions # Tất cả tài nguyên trong nhóm API "tiện ích mở rộng" ``` ### Định dạng đầu ra Để xuất thông tin chi tiết ra cửa sổ terminal của bạn theo một định dạng cụ thể, bạn có thể thêm các cờ `-o` hoặc `--output` vào lệnh `kubectl` được hỗ trợ. Định dạng đầu ra | Mô tả --------------| ----------- `-o=custom-columns=` | In một bảng bằng danh sách, các cột tùy chỉnh được phân tách bằng dấu phẩy `-o=custom-columns-file=` | In một bảng bằng cách sử dụng mẫu cột tùy chỉnh trong tệp `` `-o=json` | Xuất ra một đối tượng API theo định dạng JSON `-o=jsonpath=