在 macOS 上安裝和設定 kubectl

準備工作

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

在 macOS 上安裝 kubectl

以下是 macOS 上安裝 kubectl 的方法:

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

  1. 下載最新版本

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

    
       curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
       
  2. 驗證二進位制檔案(可選)

    下載 kubectl 校驗和檔案

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

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

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

    echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check
    

    如果有效,輸出為

    kubectl: OK
    

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

    kubectl: FAILED
    shasum: WARNING: 1 computed checksum did NOT match
    
  3. 使 kubectl 二進位制檔案可執行。

    chmod +x ./kubectl
    
  4. 將 kubectl 二進位制檔案移動到系統 PATH 中的檔案位置。

    sudo mv ./kubectl /usr/local/bin/kubectl
    sudo chown root: /usr/local/bin/kubectl
    
  5. 測試以確保你安裝的版本是最新的

    kubectl version --client
    

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

    kubectl version --client --output=yaml
    
  6. 安裝並驗證 kubectl 後,刪除校驗和檔案

    rm kubectl.sha256
    

使用 Homebrew 在 macOS 上安裝

如果你在 macOS 上使用 Homebrew 包管理器,你可以使用 Homebrew 安裝 kubectl。

  1. 執行安裝命令

    brew install kubectl
    

    或者

    brew install kubernetes-cli
    
  2. 測試以確保你安裝的版本是最新的

    kubectl version --client
    

使用 Macports 在 macOS 上安裝

如果你在 macOS 上使用 Macports 包管理器,你可以使用 Macports 安裝 kubectl。

  1. 執行安裝命令

    sudo port selfupdate
    sudo port install kubectl
    
  2. 測試以確保你安裝的版本是最新的

    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 補全。

但是,kubectl 補全指令碼依賴於 bash-completion,因此你必須事先安裝它。

升級 Bash

這裡的說明假設你使用 Bash 4.1+。你可以透過執行以下命令檢查你的 Bash 版本

echo $BASH_VERSION

如果它太舊,你可以使用 Homebrew 安裝/升級它

brew install bash

重新載入你的 Shell 並驗證是否正在使用所需版本

echo $BASH_VERSION $SHELL

Homebrew 通常將其安裝在 /usr/local/bin/bash

安裝 bash-completion

你可以透過 type _init_completion 測試是否已安裝 bash-completion v2。如果沒有,你可以使用 Homebrew 安裝它

brew install bash-completion@2

如該命令的輸出所述,將以下內容新增到你的 ~/.bash_profile 檔案中

brew_etc="$(brew --prefix)/etc" && [[ -r "${brew_etc}/profile.d/bash_completion.sh" ]] && . "${brew_etc}/profile.d/bash_completion.sh"

重新載入你的 Shell 並透過 type _init_completion 驗證 bash-completion v2 是否正確安裝。

啟用 kubectl 自動補全

你現在必須確保 kubectl 補全指令碼在所有 shell 會話中都已載入。有多種方法可以實現此目的

  • 在你的 ~/.bash_profile 檔案中載入補全指令碼

    echo 'source <(kubectl completion bash)' >>~/.bash_profile
    
  • 將補全指令碼新增到 /usr/local/etc/bash_completion.d 目錄

    kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
    
  • 如果你有 kubectl 的別名,你可以擴充套件 Shell 補全以與該別名一起使用

    echo 'alias k=kubectl' >>~/.bash_profile
    echo 'complete -o default -F __start_kubectl k' >>~/.bash_profile
    
  • 如果你使用 Homebrew 安裝了 kubectl(如此處所述),那麼 kubectl 補全指令碼應該已經在 /usr/local/etc/bash_completion.d/kubectl 中了。在這種情況下,你無需執行任何操作。

無論如何,重新載入你的 Shell 後,kubectl 補全應該可以工作了。

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/darwin/amd64/kubectl-convert"
       

    
       curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert"
       
  2. 驗證二進位制檔案(可選)

    下載 kubectl-convert 校驗和檔案

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

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

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

    echo "$(cat kubectl-convert.sha256)  kubectl-convert" | shasum -a 256 --check
    

    如果有效,輸出為

    kubectl-convert: OK
    

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

    kubectl-convert: FAILED
    shasum: WARNING: 1 computed checksum did NOT match
    
  3. 使 kubectl-convert 二進位制檔案可執行

    chmod +x ./kubectl-convert
    
  4. 將 kubectl-convert 二進位制檔案移動到系統 PATH 中的檔案位置。

    sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert
    sudo chown root: /usr/local/bin/kubectl-convert
    
  5. 驗證外掛是否成功安裝

    kubectl convert --help
    

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

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

    rm kubectl-convert kubectl-convert.sha256
    

在 macOS 上解除安裝 kubectl

根據你安裝 kubectl 的方式,使用以下方法之一。

使用命令列解除安裝 kubectl

  1. 在你的系統上找到 kubectl 二進位制檔案

    which kubectl
    
  2. 刪除 kubectl 二進位制檔案

    sudo rm <path>
    

    <path> 替換為上一步中 kubectl 二進位制檔案的路徑。例如,sudo rm /usr/local/bin/kubectl

使用 Homebrew 解除安裝 kubectl

如果你使用 Homebrew 安裝了 kubectl,請執行以下命令

brew remove kubectl

下一步

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