在 macOS 上安装和设置 kubectl
开始之前
您必须使用与您的集群版本差异在一个小版本之内的 kubectl 版本。例如,v1.35 客户端可以与 v1.34、v1.35 和 v1.36 控制平面通信。使用最新兼容版本的 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.35.0,请键入
curl -LO "https://dl.k8s.io/release/v1.35.0/bin/darwin/amd64/kubectl"对于 Apple Silicon 上的 macOS,请键入
curl -LO "https://dl.k8s.io/release/v1.35.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
解决“未找到 Auth Provider”错误消息
在 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 补全。
但是,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 并验证是否已正确安装 bash-completion v2,方法是使用 type _init_completion。
启用 kubectl 自动补全
现在您必须确保在所有 shell 会话中引用 kubectl 补全脚本。有多种方法可以实现这一点
在您的
~/.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 或更高版本。可以使用命令 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
配置 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 参考文档