在 macOS 上安裝與設定 kubectl

開始之前

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

在 macOS 上安裝 kubectl

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

在 macOS 上使用 curl 安裝 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
    

在 macOS 上使用 Homebrew 安裝

如果您在 macOS 上且使用 Homebrew 套件管理員,則可以使用 Homebrew 安裝 kubectl。

  1. 執行安裝命令

    brew install kubectl
    

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

    kubectl version --client
    

在 macOS 上使用 Macports 安裝

如果您在 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

安裝 kubectl convert 外掛程式

Kubernetes 命令列工具 kubectl 的外掛程式,可讓您在不同的 API 版本之間轉換 manifests。這對於將 manifests 遷移到較新 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

下一步

上次修改時間:2023 年 12 月 03 日下午 7:17 PST:修正移除步驟 (7b2723fba7)