在 Linux 上安裝和設定 kubectl

準備工作

您使用的 kubectl 版本必須與您的叢集版本在一個次要版本差異之內。例如,v1.34 客戶端可以與 v1.33、v1.34 和 v1.35 控制平面通訊。使用最新相容的 kubectl 版本有助於避免意外問題。

在 Linux 上安裝 kubectl

以下是在 Linux 上安裝 kubectl 的方法

在 Linux 上使用 curl 安裝 kubectl 二進位制檔案

  1. 使用命令下載最新版本

    
       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. 驗證二進位制檔案(可選)

    下載 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"
       

    根據校驗和檔案驗證 kubectl 二進位制檔案

    echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check
    

    如果有效,輸出為

    kubectl: OK
    

    如果檢查失敗,`sha256` 將以非零狀態退出並列印類似以下內容的輸出

    kubectl: FAILED
    sha256sum: WARNING: 1 computed checksum did NOT match
    
  3. 安裝 kubectl

    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    
  4. 測試以確保你安裝的版本是最新的

    kubectl version --client
    

    或者使用此命令檢視詳細版本資訊

    kubectl version --client --output=yaml
    

使用原生包管理器安裝

  1. 更新 `apt` 包索引並安裝使用 Kubernetes `apt` 倉庫所需的包

    sudo apt-get update
    # apt-transport-https may be a dummy package; if so, you can skip that package
    sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
    
  2. 下載 Kubernetes 包倉庫的公共簽名金鑰。所有倉庫都使用相同的簽名金鑰,因此您可以忽略 URL 中的版本

    # If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
    # sudo mkdir -p -m 755 /etc/apt/keyrings
    curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring
    
  1. 新增適當的 Kubernetes `apt` 倉庫。如果您想使用與 v1.34 不同的 Kubernetes 版本,請在以下命令中將 v1.34 替換為所需的次要版本

    # This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
    echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list   # helps tools such as command-not-found to work correctly
    
  1. 更新 `apt` 包索引,然後安裝 kubectl

    sudo apt-get update
    sudo apt-get install -y kubectl
    

  1. 新增 Kubernetes `yum` 倉庫。如果您想使用與 v1.34 不同的 Kubernetes 版本,請在以下命令中將 v1.34 替換為所需的次要版本。

    # This overwrites any existing configuration in /etc/yum.repos.d/kubernetes.repo
    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/
    enabled=1
    gpgcheck=1
    gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key
    EOF
    
  1. 使用 `yum` 安裝 kubectl

    sudo yum install -y kubectl
    

  1. 新增 Kubernetes `zypper` 倉庫。如果您想使用與 v1.34 不同的 Kubernetes 版本,請在以下命令中將 v1.34 替換為所需的次要版本。

    # This overwrites any existing configuration in /etc/zypp/repos.d/kubernetes.repo
    cat <<EOF | sudo tee /etc/zypp/repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/
    enabled=1
    gpgcheck=1
    gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key
    EOF
    
  1. 更新 `zypper` 並確認新倉庫已新增

    sudo zypper update
    

    出現此訊息時,按“t”或“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
    
  2. 使用 `zypper` 安裝 kubectl

    sudo zypper install -y kubectl
    

使用其他包管理器安裝

如果您使用的是 Ubuntu 或其他支援 snap 包管理器的 Linux 發行版,kubectl 可作為 snap 應用程式使用。

snap install kubectl --classic
kubectl version --client

如果您在 Linux 上使用 Homebrew 包管理器,kubectl 可供安裝

brew install kubectl
kubectl version --client

驗證 kubectl 配置

為了讓 kubectl 找到並訪問 Kubernetes 叢集,它需要一個 kubeconfig 檔案,該檔案在您使用 kube-up.sh 建立叢集或成功部署 Minikube 叢集時自動建立。預設情況下,kubectl 配置位於 `~/.kube/config`。

透過獲取叢集狀態來檢查 kubectl 是否配置正確

kubectl cluster-info

如果你看到 URL 響應,則 kubectl 已正確配置以訪問你的叢集。

如果你看到類似以下訊息,則 kubectl 配置不正確或無法連線到 Kubernetes 叢集。

The connection to the server <server-name:port> was refused - did you specify the right host or port?

例如,如果你打算在筆記型電腦(本地)上執行 Kubernetes 叢集,你需要先安裝 Minikube 等工具,然後重新執行上述命令。

如果 kubectl cluster-info 返回 URL 響應但你無法訪問你的叢集,要檢查它是否配置正確,請使用

kubectl cluster-info dump

解決“未找到身份驗證提供程式”錯誤訊息

在 Kubernetes 1.26 中,kubectl 移除了對以下雲提供商託管 Kubernetes 產品的內建認證。這些提供商已釋出 kubectl 外掛以提供特定於雲的認證。有關說明,請參閱以下提供商文件

(也可能存在其他原因導致出現相同的錯誤訊息,與此更改無關。)

可選的 kubectl 配置和外掛

啟用 shell 自動補全

kubectl 提供對 Bash、Zsh、Fish 和 PowerShell 的自動補全支援,這可以為您節省大量打字時間。

以下是為 Bash、Fish 和 Zsh 設定自動補全的步驟。

介紹

Bash 的 kubectl 補全指令碼可以透過 `kubectl completion bash` 命令生成。在您的 shell 中啟用補全指令碼將啟用 kubectl 自動補全。

然而,補全指令碼依賴於 bash-completion,這意味著您必須首先安裝此軟體(您可以透過執行 `type _init_completion` 來測試是否已安裝 bash-completion)。

安裝 bash-completion

bash-completion 由許多包管理器提供(參見此處)。您可以使用 `apt-get install bash-completion` 或 `yum install bash-completion` 等方式安裝它。

上述命令會建立 `/usr/share/bash-completion/bash_completion`,這是 bash-completion 的主指令碼。根據您的包管理器,您可能需要手動在 `~/.bashrc` 檔案中載入此檔案。

要查詢,請重新載入您的 shell 並執行 `type _init_completion`。如果命令成功,則您已設定好,否則將以下內容新增到您的 `~/.bashrc` 檔案中

source /usr/share/bash-completion/bash_completion

重新載入您的 shell 並透過鍵入 `type _init_completion` 來驗證 bash-completion 是否正確安裝。

啟用 kubectl 自動補全

Bash

您現在需要確保 kubectl 補全指令碼在所有 shell 會話中都已載入。有兩種方法可以實現這一點


echo 'source <(kubectl completion bash)' >>~/.bashrc


kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
sudo chmod a+r /etc/bash_completion.d/kubectl

如果您為 kubectl 設定了別名,則可以將 shell 補全擴充套件到該別名

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc

兩種方法是等效的。重新載入 shell 後,kubectl 自動補全應該可以工作。要在當前 shell 會話中啟用 bash 自動補全,請載入 ~/.bashrc 檔案

source ~/.bashrc

Fish 的 kubectl 補全指令碼可以透過 `kubectl completion fish` 命令生成。在您的 shell 中啟用補全指令碼將啟用 kubectl 自動補全。

要在所有 shell 會話中執行此操作,請將以下行新增到您的 `~/.config/fish/config.fish` 檔案中

kubectl completion fish | source

重新載入 shell 後,kubectl 自動補全應該可以工作了。

Zsh 的 kubectl 補全指令碼可以透過 `kubectl completion zsh` 命令生成。在您的 shell 中啟用補全指令碼將啟用 kubectl 自動補全。

要在所有 shell 會話中執行此操作,請將以下內容新增到您的 `~/.zshrc` 檔案中

source <(kubectl completion zsh)

如果您為 kubectl 設定了別名,kubectl 自動補全將自動與其一起工作。

重新載入 shell 後,kubectl 自動補全應該可以工作了。

如果您收到 `2: command not found: compdef` 這樣的錯誤,請將以下內容新增到 `~/.zshrc` 檔案的開頭

autoload -Uz compinit
compinit

配置 kuberc

有關更多資訊,請參閱 kuberc

安裝 kubectl convert 外掛

Kubernetes 命令列工具 `kubectl` 的一個外掛,允許您在不同的 API 版本之間轉換清單。這對於將清單遷移到新 Kubernetes 版本中未棄用的 api 版本特別有用。有關更多資訊,請訪問 遷移到未棄用的 API

  1. 使用命令下載最新版本

    
       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"
       
  2. 驗證二進位制檔案(可選)

    下載 kubectl-convert 校驗和檔案

    
       curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256"
       

    
       curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl-convert.sha256"
       

    根據校驗和檔案驗證 kubectl-convert 二進位制檔案

    echo "$(cat kubectl-convert.sha256) kubectl-convert" | sha256sum --check
    

    如果有效,輸出為

    kubectl-convert: OK
    

    如果檢查失敗,`sha256` 將以非零狀態退出並列印類似以下內容的輸出

    kubectl-convert: FAILED
    sha256sum: WARNING: 1 computed checksum did NOT match
    
  3. 安裝 kubectl-convert

    sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
    
  4. 驗證外掛是否成功安裝

    kubectl convert --help
    

    如果你沒有看到錯誤,則表示外掛已成功安裝。

  5. 安裝外掛後,清理安裝檔案

    rm kubectl-convert kubectl-convert.sha256
    

下一步

上次修改時間:2025 年 5 月 15 日上午 9:23 PST:新增 kuberc 專用頁面 (edac5dbf0e)