在 macOS 上安裝與設定 kubectl
開始之前
您必須使用與您的叢集次要版本差異在一個版本內的 kubectl 版本。例如,v1.32 用戶端可以與 v1.31、v1.32 和 v1.33 控制平面通訊。使用最新相容版本的 kubectl 有助於避免無法預見的問題。
在 macOS 上安裝 kubectl
以下是在 macOS 上安裝 kubectl 的方法
在 macOS 上使用 curl 安裝 kubectl 二進位檔案
下載最新版本
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"
注意
若要下載特定版本,請將命令的
$(curl -L -s https://dl.k8s.io/release/stable.txt)
部分替換為特定版本。例如,若要在 Intel macOS 上下載 1.32.0 版,請輸入
curl -LO "https://dl.k8s.io/release/v1.32.0/bin/darwin/amd64/kubectl"
對於 Apple Silicon 上的 macOS,請輸入
curl -LO "https://dl.k8s.io/release/v1.32.0/bin/darwin/arm64/kubectl"
驗證二進位檔案 (選用)
下載 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
注意
下載相同版本的二進位檔案和總和檢查碼。使 kubectl 二進位檔案可執行。
chmod +x ./kubectl
將 kubectl 二進位檔案移動到系統
PATH
上的檔案位置。sudo mv ./kubectl /usr/local/bin/kubectl sudo chown root: /usr/local/bin/kubectl
注意
確保/usr/local/bin
在您的 PATH 環境變數中。測試以確保您安裝的版本是最新的
kubectl version --client
或使用此命令取得版本的詳細檢視
kubectl version --client --output=yaml
在安裝和驗證 kubectl 之後,刪除總和檢查碼檔案
rm kubectl.sha256
在 macOS 上使用 Homebrew 安裝
如果您在 macOS 上且使用 Homebrew 套件管理員,則可以使用 Homebrew 安裝 kubectl。
執行安裝命令
brew install kubectl
或
brew install kubernetes-cli
測試以確保您安裝的版本是最新的
kubectl version --client
在 macOS 上使用 Macports 安裝
如果您在 macOS 上且使用 Macports 套件管理員,則可以使用 Macports 安裝 kubectl。
執行安裝命令
sudo port selfupdate sudo port 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 外掛程式,以提供雲端特定的身份驗證。如需指示,請參閱以下提供商文件
- Azure AKS:kubelogin 外掛程式
- Google Kubernetes Engine:gke-gcloud-auth-plugin
(也可能有其他原因導致看到相同的錯誤訊息,與該變更無關。)
選用的 kubectl 組態和外掛程式
啟用 Shell 自動完成
kubectl 為 Bash、Zsh、Fish 和 PowerShell 提供自動完成支援,這可以為您節省大量輸入時間。
以下是為 Bash、Fish 和 Zsh 設定自動完成的步驟。
簡介
Bash 的 kubectl 完成腳本可以使用 kubectl completion bash
指令產生。在您的 shell 中執行此腳本即可啟用 kubectl 完成功能。
然而,kubectl 完成腳本依賴 bash-completion,因此您必須事先安裝它。
警告
bash-completion 有兩個版本:v1 和 v2。V1 適用於 Bash 3.2(macOS 預設版本),v2 適用於 Bash 4.1+。kubectl 完成腳本無法在 bash-completion v1 和 Bash 3.2 下正確運作。它需要 bash-completion v2 和 Bash 4.1+。因此,為了在 macOS 上正確使用 kubectl 完成功能,您必須安裝並使用 Bash 4.1+(說明)。以下說明假設您使用 Bash 4.1+(即任何 4.1 或更新版本的 Bash)。升級 Bash
此處的說明假設您使用 Bash 4.1+。您可以執行以下指令來檢查您的 Bash 版本
echo $BASH_VERSION
如果版本太舊,您可以使用 Homebrew 安裝/升級它
brew install bash
重新載入您的 shell 並驗證是否正在使用所需的版本
echo $BASH_VERSION $SHELL
Homebrew 通常會將其安裝在 /usr/local/bin/bash
。
安裝 bash-completion
注意
如前所述,這些說明假設您使用 Bash 4.1+,這表示您將安裝 bash-completion v2(與 Bash 3.2 和 bash-completion v1 相反,在後者的情況下 kubectl 完成功能將無法運作)。您可以使用 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
中。在這種情況下,您無需執行任何操作。注意
Homebrew 安裝的 bash-completion v2 會執行BASH_COMPLETION_COMPAT_DIR
目錄中的所有檔案,這就是後兩種方法可行的原因。
無論如何,在重新載入您的 shell 後,kubectl 完成功能應該可以運作了。
注意
Fish 的自動完成功能需要 kubectl 1.23 或更高版本。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
使用以下指令下載最新版本
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"
驗證二進位檔案 (選用)
下載 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
注意
下載相同版本的二進位檔案和總和檢查碼。使 kubectl-convert 二進位檔案可執行
chmod +x ./kubectl-convert
將 kubectl-convert 二進位檔案移動到系統
PATH
上的檔案位置。sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert sudo chown root: /usr/local/bin/kubectl-convert
注意
確保/usr/local/bin
在您的 PATH 環境變數中。驗證外掛程式是否成功安裝
kubectl convert --help
如果您沒有看到錯誤訊息,表示外掛程式已成功安裝。
安裝外掛程式後,清理安裝檔案
rm kubectl-convert kubectl-convert.sha256
在 macOS 上解除安裝 kubectl
根據您安裝 kubectl
的方式,使用以下方法之一。
使用命令列解除安裝 kubectl
在您的系統上找到
kubectl
二進位檔案which kubectl
移除
kubectl
二進位檔案sudo rm <path>
將
<path>
替換為上一步中kubectl
二進位檔案的路徑。例如,sudo rm /usr/local/bin/kubectl
。
使用 Homebrew 解除安裝 kubectl
如果您使用 Homebrew 安裝 kubectl
,請執行以下指令
brew remove kubectl
下一步
- 安裝 Minikube
- 請參閱入門指南以了解更多關於建立叢集的資訊。
- 了解如何啟動和公開您的應用程式。
- 如果您需要存取您未建立的叢集,請參閱共享叢集存取文件。
- 閱讀 kubectl 參考文件