# Hướng dẫn cài đặt và cấu hình công cụ kubectl trong Kubernetes **Điều kiện cần** ----------------- Bạn cần phải sử dụng phiên bản kubectl sai lệch không quá một phiên bản với version của cluster. Ví dụ, một client v1.2 nên được hoạt động với master v1.1, v1.2 và v1.3. Sử dụng phiên bản mới nhất của kubectl giúp tránh được các vấn đề không lường trước được. **I. Cài đặt kubectl trên Linux** --------------------------------- ### 1. Cài đặt kubectl binary với curl trên Linux **Bước 1:** Tải về phiên bản mới nhất với câu lệnh: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl ``` Để tải về phiên bản cụ thể, hãy thay thế phần *$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)* trong câu lệnh với một phiên bản cụ thể. Ví dụ, để tải về phiên bản v1.17.0 trên Linux, hãy chạy lệnh: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl ``` **Bước 2:** Tạo kubectl binary thực thi qua lệnh: ``` chmod +x ./kubectl ``` **Bước 3:** Đưa bản binary vào biến môi trường PATH của bạn qua lệnh: ``` sudo mv ./kubectl /usr/local/bin/kubectl ``` **Bước 4:** Kiểm tra chắc chắn rằng phiên bản bạn cài là mới nhất qua lệnh: ``` kubectl version ``` ### 2\. Cài đặt kubectl sử dụng trình quản lý gói * Với các hệ điều hành CentOS, RHEL hoặc Fedora, bạn có thể chạy lệnh: ``` sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubectl ``` ### 3\. Cài đặt kubectl với snap Nếu bạn đang sử dụng Ubuntu hoặc distro Linux khác hỗ trợ trình quản lý gói [snap](https://snapcraft.io/docs/core/install), thì kubectl đã có sẵn trong [snap](https://snapcraft.io/). **Bước 1:** Chuyển sang user snap và thực thi câu lệnh cài đặt: ``` sudo snap install kubectl --classic ``` **Bước 2:** Kiểm tra phiên bản bạn vừa cài là mới nhất: ``` kubectl version ``` **II. Cài đặt kubectl trên macOS** ---------------------------------- ### 1. Cài đặt kubectl binary với curl trên macOS **Bước 1:** Tải về phiên bản mới nhất: ``` curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl" ``` Để tải về phiên bản cụ thể, hãy thay thế phần *$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)* trong câu lệnh với phiên bản cụ thể. Ví dụ, để tải về phiên bản v1.17.0 trên macOS, hãy chạy lệnh: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/darwin/amd64/kubectl ``` **Bước 2:** Tạo kubectl binary thực thi qua lệnh: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/darwin/amd64/kubectl ``` **Bước 3:** Đưa bản binary vào biến môi trường PATH của bạn qua lệnh: ``` sudo mv ./kubectl /usr/local/bin/kubectl ``` **Bước 4:** Kiểm tra chắc chắn rằng phiên bản bạn cài là mới nhất qua lệnh: ``` kubectl version ``` ### 2\. Cài đặt với Homebrew trên macOS Nếu bạn đang trên macOS và sử dụng trình quản lý gói [Homebrew](https://brew.sh/), bạn có thể cài đặt kubectl với Homebrew. **Bước 1:** Chạy câu lệnh cài đặt: ``` brew install kubernetes-cli ``` hoặc lệnh: ``` brew install kubectl ``` **Bước 2:** Kiểm tra chắc chắn rằng phiên bản bạn cài là mới nhất: ``` kubectl version ``` ### 3\. Cài đặt với Macports trên macOS Nếu bạn đang trên macOS và sử dụng trình quản lý gói [Macports](https://macports.org/), bạn có thể cài đặt kubectl với Macports. **Bước 1:** Chạy câu lệnh cài đặt: ``` sudo port selfupdatesudo port install kubectl ``` **Bước 2:** Kiểm tra chắc chắn rằng phiên bản bạn cài là mới nhất: ``` sudo port selfupdatesudo port install kubectl ``` **III. Cài đặt kubectl trên Windows** ------------------------------------- ### Cài đặt kubectl binary với curl trên Windows dùng Powershell **Bước 1:** Tải về phiên bản mới nhất v1.17.0 từ [đường dẫn này](https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/windows/amd64/kubectl.exe).Hoặc nếu bạn đã cài đặt `curl`, hãy sử dụng câu lệnh sau: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/windows/amd64/kubectl.exe ``` **Bước 2:** Đưa bản binary vào biến môi trường PATH của bạn. **Bước 3:** Kiểm tra chắn chắn phiên bản `kubectl` giống với bản đã tải về: ``` kubectl version ``` **Ghi chú:** [Docker Desktop cho Windows](https://docs.docker.com/docker-for-windows/#kubernetes) thêm phiên bản `kubectl` riêng của nó vào PATH. Nếu bạn đã cài đặt Docker Desktop trước đây, bạn có thể cần đặt đường dẫn PATH của bạn trước khi bản cài đặt Docker Desktop thêm 1 PATH vào hoặc loại bỏ `kubectl` của Docker Desktop. **IV. Xác minh cấu hình kubectl** --------------------------------- * Để kubectl tìm kiếm và truy cập Kubernetes cluster, nó cần một kubeconfig file, được tự động tạo ra khi bạn tạo mới một cluster sử dụng [kube-up.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh) hoặc triển khai thành công một Minikube cluster. Mặc định thì cấu hình của kubectl được xác định tại `~/.kube/config`. * Kiểm tra kubectl được cấu hình đúng bằng việc xem trạng thái của cluster: kubectl cluster-info ``` kubectl cluster-info ``` * Nếu bạn trông thấy một URL phản hồi, thì kubectl đã được cấu hình đúng để truy cập vào cluster của bạn. * Nếu bạn trông thấy một tin nhắn tương tự bên dưới, thì kuberctl chưa được cấu hình đúng hoặc chưa thể kết nối với Kubernetes cluster. `The connection to the server was refused - did you specify the right host or port?` Ví dụ như, nếu bạn đang định chạy một Kubernetes cluster trên laptop của bạn (locally), bạn sẽ cần một công cụ như Minikube được cài trước đó và chạy lại các câu lệnh bên trên. Nếu kubectl cluster-info trả về url nhưng bạn không thể truy cập vào cluster của bạn, thì hãy kiểm tra nó đã được cấu hình đúng hay chưa, bằng cách: ``` kubectl cluster-info dump ```