Cài đặt và cấu hình kubectl trên Linux
Trước khi bạn bắt đầu
Bạn cần sử dụng phiên bản kubectl có chênh lệch không quá một phiên bản phụ (minor) so với Kubernetes cluster của bạn. Ví dụ: Một kubectl phiên bản v1.32 có thể tương tác với các control plane phiên bản v1.31, v1.32 và v1.33. Việc sử dụng kubectl với phiên bản mới nhất và chênh lệch không quá một phiên bản phụ sẽ giúp tránh các sự cố ngoài dự kiến.
Cài đặt kubectl trên Linux
Bạn có thể cài đặt kubectl trên Linux bằng các phương pháp sau:
- Cài đặt tệp binary kubectl bằng curl trên Linux
- Cài đặt bằng trình quản lý gói của hệ điều hành
- Cài đặt bằng các trình quản lý gói khác
Cài đặt tệp binary kubectl bằng curl trên Linux
-
Tải xuống phiên bản mới nhất bằng lệnh:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
Lưu ý:
Để tải một phiên bản cụ thể, hãy thay thế phiên bản cụ thể vào câu lệnh sau
$(curl -L -s https://dl.k8s.io/release/stable.txt)
.Ví dụ, để tải phiên bản 1.32.0 với Linux x86-64, gõ:
curl -LO https://dl.k8s.io/release/v1.32.0/bin/linux/amd64/kubectl
Đối với Linux ARM64:
curl -LO https://dl.k8s.io/release/v1.32.0/bin/linux/arm64/kubectl
-
Xác minh tệp binary (bước này không bắt buộc)
Tải xuống tệp checksum của kubectl:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl.sha256"
Xác minh tệp binary kubectl với tệp checksum:
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
Nếu hợp lệ, kết quả sẽ là:
kubectl: OK
Nếu việc kiểm tra thất bại, bạn sẽ nhận được thông báo:
kubectl: FAILED sha256sum: WARNING: 1 computed checksum did NOT match
Lưu ý:
Bạn cần phải tải tệp binary và checksum cùng một phiên bản. -
Cài đặt kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Lưu ý:
Nếu bạn không có quyền root, bạn có thể cài kubectl vào thư mục
~/.local/bin
:chmod +x kubectl mkdir -p ~/.local/bin mv ./kubectl ~/.local/bin/kubectl # Thêm ~/.local/bin vào $PATH
-
Kiểm tra phiên bản đã cài đặt:
kubectl version --client
Hoặc để xem chi tiết hơn:
kubectl version --client --output=yaml
Cài đặt bằng trình quản lý gói của hệ điều hành
- Cập nhật
apt
và cài các gói cần thiết:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
- Thêm khóa xác thực của Kubernetes:
sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
- Thêm repository Kubernetes vào APT:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list
- Cài đặt kubectl:
sudo apt-get update
sudo apt-get install -y kubectl
-
Thêm repository Kubernetes vào YUM:
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key EOF
-
Cài kubectl bằng YUM:
sudo yum install -y kubectl
-
Thêm repository Kubernetes vào Zypper:
cat <<EOF | sudo tee /etc/zypp/repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key EOF
-
Cập nhật Zypper:
sudo zypper update
When this message appears, press 't' or 'a':
New repository or package signing key received: Repository: Kubernetes Key Fingerprint: 1111 2222 3333 4444 5555 6666 7777 8888 9999 AAAA Key Name: isv:kubernetes OBS Project <isv:kubernetes@build.opensuse.org> Key Algorithm: RSA 2048 Key Created: Thu 25 Aug 2022 01:21:11 PM -03 Key Expires: Sat 02 Nov 2024 01:21:11 PM -03 (expires in 85 days) Rpm Name: gpg-pubkey-9a296436-6307a177 Note: Signing data enables the recipient to verify that no modifications occurred after the data were signed. Accepting data with no, wrong or unknown signature can lead to a corrupted system and in extreme cases even to a system compromise. Note: A GPG pubkey is clearly identified by its fingerprint. Do not rely on the key's name. If you are not sure whether the presented key is authentic, ask the repository provider or check their web site. Many providers maintain a web page showing the fingerprints of the GPG keys they are using. Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): a
-
Cài kubectl bằng Zypper:
sudo zypper install -y kubectl
Cài đặt bằng các trình quản lý gói khác
If you are on Ubuntu or another Linux distribution that supports the snap package manager, kubectl is available as a snap application.
snap install kubectl --classic
kubectl version --client
brew install kubectl
kubectl version --client
Xác minh cấu hình kubectl
Để kubectl có thể tìm kiếm và truy cập vào Kubernetes cluster, nó cần một tệp kubeconfig, được tạo tự động khi chúng ta tạo một cluster bằng kube-up.sh hoặc khi triển khai thành công cluster Minikube.
Mặc định, thông tin cấu hình của kubectl được định nghĩa trong ~/.kube/config
.
Chúng ta có thể kiểm tra xem kubectl đã được cấu hình đúng chưa bằng cách kiểm tra thông tin của cluster:
kubectl cluster-info
Nếu bạn thấy kết quả trả về là một đường dẫn, thì kubectl đã được cấu hình đúng để truy cập cluster của chúng ta.
Nếu bạn thấy thông báo tương tự như dưới đây, điều đó có nghĩa kubectl chưa được cấu hình đúng hoặc không thể kết nối tới Kubernetes cluster.
The connection to the server <server-name:port> was refused - did you specify the right host or port?
Thông báo trên, được kubectl trả về, mong bạn kiểm tra lại đường dẫn (bao host và port) tới cluster đã đúng hay chưa
Ví dụ, nếu bạn đang dự định tạo một Kubernetes cluster trên máy tính cá nhân, bạn sẽ cần cài đặt một công cụ như Minikube trước, sau đó chạy lại các lệnh đã nêu ở trên.
Nếu lệnh kubectl cluster-info
trả về đường dẫn nhưng bạn vẫn không thể truy cập vào cluster, hãy kiểm tra cấu hình kỹ hơn bằng lệnh sau:
kubectl cluster-info dump
Xử lý lỗi 'No Auth Provider Found'
Ở phiên bản 1.26 của Kubernetes, kubectl đã loại bỏ tính năng xác thực tích hợp sẵn cho các dịch vụ Kubernetes được quản lý bởi các nhà cung cấp đám mây dưới đây. Các nhà cung cấp này đã phát hành plugin kubectl để hỗ trợ xác thực dành riêng cho nền tảng của họ. Tham khảo tài liệu hướng dẫn của nhà cung cấp để biết thêm thông tin:
- Azure AKS: kubelogin plugin
- Google Kubernetes Engine: gke-gcloud-auth-plugin
(Lưu ý: cùng một thông báo lỗi cũng có thể xuất hiện vì các lý do khác không liên quan đến sự thay đổi này.)
Các cấu hình và plugin tùy chọn của kubectl
Bật tự động hoàn tất trong shell
kubectl hỗ trợ Bash, Zsh, Fish và PowerShell. Xem hướng dẫn đầy đủ:
Giới thiệu
Để tạo script tự động gợi ý các lệnh thuộc kubectl
cho Bash, chúng ta dùng lệnh: kubectl completion bash
.
Trích dẫn script này vào shell của bạn sẽ kích hoạt tính năng tự động gợi ý lệnh cho kubectl.
Tuy nhiên, script này yêu cầu cài đặt
bash-completion,
như là điều kiện tiên quyết.
(Bạn có thể chạy lệnh type _init_completion
để kiểm tra xem hệ thống đã có bash-completion chưa.)
Cài đặt bash-completion
bash-completion
được hỗ trợ cài đặt bởi nhiều trình quản lý gói (package manager)
(xem thêm tại đây).
Chúng ta có thể cài đặt bằng một trong các lệnh sau:
sudo apt-get install bash-completion
hoặc
sudo yum install bash-completion
Các lệnh trên sẽ tạo tệp /usr/share/bash-completion/bash_completion
, là script chính của bash-completion
.
Tùy vào trình quản lý gói mà bạn đang sử dụng, bạn có thể cần thêm dòng sau vào file ~/.bashrc
để sử dụng:
source /usr/share/bash-completion/bash_completion
Sau khi reload shell, kiểm tra lại bằng lệnh:
type _init_completion
Kích hoạt tự động gợi ý cho kubectl
Bash
Để đảm bảo rằng script gợi ý lệnh cho kubectl sẽ được trích dẫn trong mọi phiên (session) của shell. Có hai cách để làm điều này:
```bash
echo 'source <(kubectl completion bash)' >>~/.bashrc
```
```bash
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
sudo chmod a+r /etc/bash_completion.d/kubectl
```
kubectl
, bạn cũng có thể kích hoạt tự động gợi ý cho tên viết tắt đó bằng các lệnh sau:
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
Lưu ý:
bash-completion
sẽ tự động nạp tất cả các script gợi ý có trong thư mục /etc/bash_completion.d
.source ~/.bashrc
Lưu ý:
Gợi ý lệnh cho Fish yêu cầu người dùng phải sử dụngkubectl
phiên bản 1.23 trở về sau.Script gợi ý lệnh kubectl
cho Fish có thể được tạo bằng lệnh:
kubectl completion fish
Sau đó trích dẫn script này trong shell để bật tính năng gợi ý lệnh cho kubectl
.
Để bật tính năng này trong tất cả các phiên (session) shell, hãy thêm dòng sau vào tập tin ~/.config/fish/config.fish
:
kubectl completion fish | source
Sau khi tải shell, tính năng gợi ý của kubectl sẽ được bật.
Script cho tính năng gợi ý lệnh kubectl
cho Zsh có thể được tạo bằng lệnh:
kubectl completion zsh
Trích dẫn script này trong shell của bạn để kích hoạt tính năng này cho kubectl.
Để thực hiện tất cả các thao tác nêu trên trong tất cả các phiên (session) của shell, hãy thêm dòng sau vào file ~/.zshrc
:
source <(kubectl completion zsh)
Nếu bạn có tên viết tắt (alias) cho kubectl
thì tính năng này sẽ hoạt động tương tự.
Sau khi tải lại shell, tính năng gợi ý lệnh cho kubectl sẽ được kích hoạt.
Nếu bạn nhận được thông báo lỗi: 2: command not found: compdef
, hãy thêm các dòng lệnh dưới đây vào đầu tập tin ~/.zshrc
:
autoload -Uz compinit
compinit
Cài đặt plugin kubectl convert
Đây là một plugin của kubectl
, cho phép bạn chuyển đổi các tệp manifest giữa các phiên bản API khác nhau.
Điều này đặc biệt hữu ích khi bạn muốn cập nhật manifest sang phiên bản API mới hơn còn được hỗ trợ, khi cập nhật phiên bản mới cho Kubernetes.
Để biết thêm thông tin, vui lòng truy cập:
migrate to non deprecated apis
-
Tải xuống binary mới nhất:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl-convert"
Validate the kubectl-convert binary against the checksum file:
echo "$(cat kubectl-convert.sha256) kubectl-convert" | sha256sum --check
If valid, the output is:
kubectl-convert: OK
If the check fails,
sha256
exits with nonzero status and prints output similar to:kubectl-convert: FAILED sha256sum: WARNING: 1 computed checksum did NOT match
Lưu ý:
Download the same version of the binary and checksum. -
Cài đặt plugin kubectl-convert:
sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
-
Xác minh plugin đã cài thành công:
kubectl convert --help
-
Dọn các tệp cài đặt sau khi hoàn tất:
rm kubectl-convert kubectl-convert.sha256
Tiếp theo là gì
Xem thêm tại Bước tiếp theo.