在 Linux 上安装和设置 kubectl
准备工作
您必须使用与您的集群版本相差不超过一个次要版本的 kubectl 版本。例如,v1.30 客户端可以与 v1.29、v1.30 和 v1.31 控制平面通信。使用最新的兼容版本的 kubectl 有助于避免意外问题。
在 Linux 上安装 kubectl
以下是在 Linux 上安装 kubectl 的方法
使用 curl 在 Linux 上安装 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.30.0,请输入
curl -LO https://dl.k8s.io/release/v1.30.0/bin/linux/amd64/kubectl
对于 Linux ARM64,请输入
curl -LO https://dl.k8s.io/release/v1.30.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.30/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
存储库。如果您想使用 Kubernetes 版本而不是 v1.30,请在以下命令中将 v1.30 替换为所需的次要版本# 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.30/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 升级到另一个次要版本,您需要在运行apt-get update
和 apt-get upgrade
之前修改 /etc/apt/sources.list.d/kubernetes.list
中的版本。此过程在更改 Kubernetes 软件包存储库中有更详细的描述。更新
apt
包索引,然后安装 kubectlsudo apt-get update sudo apt-get install -y kubectl
添加 Kubernetes
yum
存储库。如果您想使用 Kubernetes 版本而不是 v1.30,请在以下命令中将 v1.30 替换为所需的次要版本。# 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.30/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key EOF
注意
要将 kubectl 升级到另一个次要版本,您需要在运行yum update
之前修改 /etc/yum.repos.d/kubernetes.repo
中的版本。此过程在更改 Kubernetes 软件包存储库中有更详细的描述。使用
yum
安装 kubectlsudo yum install -y kubectl
添加 Kubernetes
zypper
存储库。如果您想使用 Kubernetes 版本而不是 v1.30,请在以下命令中将 v1.30 替换为所需的次要版本。# 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.30/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key EOF
注意
要将 kubectl 升级到另一个次要版本,您需要在运行zypper update
之前修改 /etc/zypp/repos.d/kubernetes.repo
中的版本。此过程在更改 Kubernetes 软件包存储库中有更详细的描述。使用
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
解决“未找到身份验证提供程序”错误消息
在 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 设置自动补全的过程。
简介
可以使用 kubectl completion bash
命令生成 Bash 的 kubectl 补全脚本。在您的 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 或更高版本。可以使用 kubectl completion fish
命令生成 Fish 的 kubectl 补全脚本。在您的 Shell 中加载补全脚本将启用 kubectl 自动补全。
要在所有 Shell 会话中执行此操作,请将以下行添加到您的 ~/.config/fish/config.fish
文件中
kubectl completion fish | source
重新加载 Shell 后,kubectl 自动补全应该可以工作。
可以使用 kubectl completion zsh
命令生成 Zsh 的 kubectl 补全脚本。在您的 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 版本之间转换清单。这对于将清单迁移到具有更新 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 参考文档