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

  1. 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"
       
  2. 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
    
  3. Cài đặt kubectl

    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    
  4. 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

  1. 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
  1. 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
  1. 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
  1. Cài đặt kubectl:
sudo apt-get update
sudo apt-get install -y kubectl

  1. 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
    
  2. Cài kubectl bằng YUM:

    sudo yum install -y kubectl
    

  1. 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
    
  2. 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
    
  3. 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:

(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
```
  Nếu bạn có tên viết tắt (alias) cho 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

 

  Cả hai cách trên đều cho kết quả giống nhau. Sau khi tải lại shell, các lệnh gợi ý cho kubectl sẽ được hỗ trợ. Để kích hoạt tính năng này ngay trong phiên làm việc hiện tại, hãy chạy:  

source ~/.bashrc

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

  1. 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
    
  2. Cài đặt plugin kubectl-convert:

    sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
    
  3. Xác minh plugin đã cài thành công:

    kubectl convert --help
    
  4. 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.

Last modified April 03, 2025 at 8:59 AM PST: Translate install-kubectl-linux.md (b3e272872a)