在 macOS 上安装和设置 kubectl
准备工作
你必须使用与你的集群主版本相差不超过一个次版本的 kubectl 版本。例如,v1.33 客户端可以与 v1.32、v1.33 和 v1.34 控制平面通信。使用最新兼容的 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.33.0,输入
curl -LO "https://dl.k8s.io/release/v1.33.0/bin/darwin/amd64/kubectl"
对于 Apple Silicon 上的 macOS,输入
curl -LO "https://dl.k8s.io/release/v1.33.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)。这对于将清单迁移到更新 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 参考文档