在 Linux 上安裝和設定 kubectl
開始之前
您必須使用與叢集次要版本差異在一個版本以內的 kubectl 版本。例如,v1.32 用戶端可以與 v1.31、v1.32 和 v1.33 控制平面通訊。使用最新相容版本的 kubectl 有助於避免無法預見的問題。
在 Linux 上安裝 kubectl
以下是在 Linux 上安裝 kubectl 的方法
在 Linux 上使用 curl 安裝 kubectl 二進位檔案
使用以下命令下載最新發行版本
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"
注意
若要下載特定版本,請將命令的
$(curl -L -s https://dl.k8s.io/release/stable.txt)
部分替換為特定版本。例如,若要在 Linux x86-64 上下載 1.32.0 版本,請輸入
curl -LO https://dl.k8s.io/release/v1.32.0/bin/linux/amd64/kubectl
對於 Linux ARM64,請輸入
curl -LO https://dl.k8s.io/release/v1.32.0/bin/linux/arm64/kubectl
驗證二進位檔案(選用)
下載 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
注意
下載相同版本的二進位檔案和總和檢查碼。安裝 kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
注意
如果您在目標系統上沒有 root 存取權,您仍然可以將 kubectl 安裝到
~/.local/bin
目錄chmod +x kubectl mkdir -p ~/.local/bin mv ./kubectl ~/.local/bin/kubectl # and then append (or prepend) ~/.local/bin to $PATH
測試以確保您安裝的版本是最新的
kubectl version --client
或使用此命令取得版本的詳細檢視
kubectl version --client --output=yaml
使用原生套件管理安裝
更新
apt
套件索引,並安裝使用 Kubernetesapt
儲存庫所需的套件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
下載 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.32/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
注意
在舊於 Debian 12 和 Ubuntu 22.04 的版本中,預設情況下/etc/apt/keyrings
資料夾不存在,應在執行 curl 命令之前建立它。新增適當的 Kubernetes
apt
儲存庫。如果您想使用與 v1.32 不同的 Kubernetes 版本,請將以下命令中的 v1.32 替換為所需的次要版本# 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.32/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
注意
若要將 kubectl 升級到另一個次要版本,您需要先在/etc/apt/sources.list.d/kubernetes.list
中調整版本,然後執行 apt-get update
和 apt-get upgrade
。此程序在變更 Kubernetes 套件儲存庫中有更詳細的說明。更新
apt
套件索引,然後安裝 kubectlsudo apt-get update sudo apt-get install -y kubectl
新增 Kubernetes
yum
儲存庫。如果您想使用與 v1.32 不同的 Kubernetes 版本,請將以下命令中的 v1.32 替換為所需的次要版本。# 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.32/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key EOF
注意
若要將 kubectl 升級到另一個次要版本,您需要先在/etc/yum.repos.d/kubernetes.repo
中調整版本,然後執行 yum update
。此程序在變更 Kubernetes 套件儲存庫中有更詳細的說明。使用
yum
安裝 kubectlsudo yum install -y kubectl
新增 Kubernetes
zypper
儲存庫。如果您想使用與 v1.32 不同的 Kubernetes 版本,請將以下命令中的 v1.32 替換為所需的次要版本。# 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.32/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key EOF
注意
若要將 kubectl 升級到另一個次要版本,您需要先在/etc/zypp/repos.d/kubernetes.repo
中調整版本,然後執行 zypper update
。此程序在變更 Kubernetes 套件儲存庫中有更詳細的說明。更新
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
使用
zypper
安裝 kubectlsudo zypper install -y kubectl
使用其他套件管理安裝
驗證 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
疑難排解 'No Auth Provider Found' 錯誤訊息
在 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 自動完成。
但是,完成腳本依賴 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
您現在需要確保在您的所有 Shell 會話中都載入 kubectl 完成腳本。您可以使用以下兩種方式執行此操作
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
注意
bash-completion 會載入/etc/bash_completion.d
中的所有完成腳本。兩種方法是等效的。重新載入您的 Shell 後,kubectl 自動完成應該可以運作。若要在目前的 Shell 會話中啟用 bash 自動完成,請載入 ~/.bashrc 檔案
source ~/.bashrc
注意
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 版本之間轉換 Manifest 檔案。這對於將 Manifest 檔案遷移到具有較新 Kubernetes 版本的非棄用 API 版本特別有幫助。如需更多資訊,請造訪遷移到非棄用 API
使用以下命令下載最新發行版本
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"
驗證二進位檔案(選用)
下載 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
注意
下載相同版本的二進位檔案和總和檢查碼。安裝 kubectl-convert
sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
驗證外掛程式是否成功安裝
kubectl convert --help
如果您沒有看到錯誤訊息,則表示外掛程式已成功安裝。
安裝外掛程式後,清除安裝檔案
rm kubectl-convert kubectl-convert.sha256
下一步
- 安裝 Minikube
- 請參閱入門指南,以瞭解更多關於建立叢集的資訊。
- 瞭解如何啟動和公開您的應用程式。
- 如果您需要存取您未建立的叢集,請參閱共用叢集存取文件。
- 閱讀 kubectl 參考文件