在 Linux 上安裝和設定 kubectl
準備工作
您使用的 kubectl 版本必須與您的叢集版本在一個次要版本差異之內。例如,v1.34 客戶端可以與 v1.33、v1.34 和 v1.35 控制平面通訊。使用最新相容的 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.34.0 版本,請輸入
curl -LO https://dl.k8s.io/release/v1.34.0/bin/linux/amd64/kubectl
對於 Linux ARM64,請輸入
curl -LO https://dl.k8s.io/release/v1.34.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` 包索引並安裝使用 Kubernetes `apt` 倉庫所需的包
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.34/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.34 不同的 Kubernetes 版本,請在以下命令中將 v1.34 替換為所需的次要版本
# 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.34/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` 包索引,然後安裝 kubectl
sudo apt-get update sudo apt-get install -y kubectl
新增 Kubernetes `yum` 倉庫。如果您想使用與 v1.34 不同的 Kubernetes 版本,請在以下命令中將 v1.34 替換為所需的次要版本。
# 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.34/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key EOF
注意
要將 kubectl 升級到另一個次要版本,您需要在執行 `yum update` 之前在 `/etc/yum.repos.d/kubernetes.repo` 中更改版本。此過程在更改 Kubernetes 包倉庫中進行了更詳細的描述。使用 `yum` 安裝 kubectl
sudo yum install -y kubectl
新增 Kubernetes `zypper` 倉庫。如果您想使用與 v1.34 不同的 Kubernetes 版本,請在以下命令中將 v1.34 替換為所需的次要版本。
# 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.34/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key EOF
注意
要將 kubectl 升級到另一個次要版本,您需要在執行 `zypper update` 之前在 `/etc/zypp/repos.d/kubernetes.repo` 中更改版本。此過程在更改 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` 安裝 kubectl
sudo 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
解決“未找到身份驗證提供程式”錯誤訊息
在 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
您現在需要確保 kubectl 補全指令碼在所有 shell 會話中都已載入。有兩種方法可以實現這一點
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
配置 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/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 參考文件