在 macOS 上安裝和設定 kubectl
準備工作
你使用的 kubectl 版本必須與你的叢集版本在一個小版本差異之內。例如,v1.34 客戶端可以與 v1.33、v1.34 和 v1.35 控制平面通訊。使用最新相容的 kubectl 版本有助於避免意外問題。
在 macOS 上安裝 kubectl
以下是 macOS 上安裝 kubectl 的方法:
使用 curl 在 macOS 上安裝 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.34.0 版本,請輸入
curl -LO "https://dl.k8s.io/release/v1.34.0/bin/darwin/amd64/kubectl"
對於 Apple Silicon 上的 macOS,請輸入
curl -LO "https://dl.k8s.io/release/v1.34.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
使用 Homebrew 在 macOS 上安裝
如果你在 macOS 上使用 Homebrew 包管理器,你可以使用 Homebrew 安裝 kubectl。
執行安裝命令
brew install kubectl
或者
brew install kubernetes-cli
測試以確保你安裝的版本是最新的
kubectl version --client
使用 Macports 在 macOS 上安裝
如果你在 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
中了。在這種情況下,你無需執行任何操作。注意
bash-completion v2 的 Homebrew 安裝載入了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
配置 kuberc
有關更多資訊,請參閱 kuberc。
安裝 kubectl convert
外掛
一個用於 Kubernetes 命令列工具 kubectl
的外掛,它允許你在不同的 API 版本之間轉換清單。這對於將清單遷移到具有更新 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 參考文件