Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Install and Set Up kubectl on macOS

在 macOS 系统上安装和设置 kubectl

准备开始

kubectl 版本和集群之间的差异必须在一个小版本号之内。 例如:v1.29 版本的客户端能与 v1.28、 v1.29 和 v1.30 版本的控制面通信。 用最新兼容版本的 kubectl 有助于避免不可预见的问题。

在 macOS 系统上安装 kubectl

在 macOS 系统上安装 kubectl 有如下方法:

用 curl 在 macOS 系统上安装 kubectl

  1. 下载最新的发行版:

    
       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"
       
  1. 验证可执行文件(可选操作)

    下载 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
    
  1. 将 kubectl 置为可执行文件:

    chmod +x ./kubectl
    
  1. 将可执行文件 kubectl 移动到系统可寻址路径 PATH 内的一个位置:

    sudo mv ./kubectl /usr/local/bin/kubectl
    sudo chown root: /usr/local/bin/kubectl
    
  1. 测试一下,确保你安装的是最新的版本:

    kubectl version --client
    

    或者使用下面命令来查看版本的详细信息:

    kubectl version --client --output=yaml
    
  1. 安装插件后,清理安装文件:

    rm kubectl kubectl.sha256
    

用 Homebrew 在 macOS 系统上安装

如果你是 macOS 系统,且用的是 Homebrew 包管理工具, 则可以用 Homebrew 安装 kubectl。

  1. 运行安装命令:

    brew install kubectl
    

    brew install kubernetes-cli
    
  1. 测试一下,确保你安装的是最新的版本:

    kubectl version --client
    

用 Macports 在 macOS 系统上安装

如果你用的是 macOS,且用 Macports 包管理工具,则你可以用 Macports 安装 kubectl。

  1. 运行安装命令:

    sudo port selfupdate
    sudo port install kubectl
    
  1. 测试一下,确保你安装的是最新的版本:

    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?
(访问 <server-name:port> 被拒绝 - 你指定的主机和端口是否有误?)

例如,如果你想在自己的笔记本上(本地)运行 Kubernetes 集群,你需要先安装一个 Minikube 这样的工具,然后再重新运行上面的命令。

如果命令 kubectl cluster-info 返回了 URL,但你还不能访问集群,那可以用以下命令来检查配置是否妥当:

kubectl cluster-info dump

排查"找不到身份验证提供商"的错误信息

在 Kubernetes 1.26 中,kubectl 删除了以下云提供商托管的 Kubernetes 产品的内置身份验证。 这些提供商已经发布了 kubectl 插件来提供特定于云的身份验证。 有关说明,请参阅以下提供商文档:

(还可能会有其他原因会看到相同的错误信息,和这个更改无关。)

可选的 kubectl 配置和插件

启用 shell 自动补全功能

kubectl 为 Bash、Zsh、Fish 和 PowerShell 提供自动补全功能,可以为你节省大量的输入。

下面是为 Bash、Fish 和 Zsh 设置自动补全功能的操作步骤。

简介

kubectl 的 Bash 补全脚本可以通过 kubectl completion bash 命令生成。 在你的 Shell 中导入(Sourcing)这个脚本即可启用补全功能。

此外,kubectl 补全脚本依赖于工具 bash-completion, 所以你必须先安装它。

升级 Bash

后续说明假定你已使用 Bash 4.1+。你可以运行以下命令检查 Bash 版本:

echo $BASH_VERSION

如果版本太旧,可以用 Homebrew 安装/升级:

brew install bash

重新加载 Shell,并验证所需的版本已经生效:

echo $BASH_VERSION $SHELL

Homebrew 通常把它安装为 /usr/local/bin/bash

安装 bash-completion

你可以用命令 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 自动补全功能

你现在需要确保在所有的 Shell 环境中均已导入(sourced)kubectl 的补全脚本, 有若干种方法可以实现这一点:

  • 在文件 ~/.bash_profile 中导入(Source)补全脚本:

    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 中了。这种情况下,你什么都不需要做。

总之,重新加载 Shell 之后,kubectl 补全功能将立即生效。

kubectl 通过命令 kubectl completion fish 生成 Fish 自动补全脚本。 在 shell 中导入(Sourcing)该自动补全脚本,将启动 kubectl 自动补全功能。

为了在所有的 shell 会话中实现此功能,请将下面内容加入到文件 ~/.config/fish/config.fish 中。

kubectl completion fish | source

重新加载 shell 后,kubectl 自动补全功能将立即生效。

kubectl 通过命令 kubectl completion zsh 生成 Zsh 自动补全脚本。 在 Shell 中导入(Sourcing)该自动补全脚本,将启动 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

  1. 用以下命令下载最新发行版:

    
       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"
       
  1. 验证该可执行文件(可选步骤)

    下载 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
    

    验证失败时,sha256 将以非零值退出,并打印输出类似于:

    kubectl-convert: FAILED
    shasum: WARNING: 1 computed checksum did NOT match
    
  1. 使 kubectl-convert 二进制文件可执行

    chmod +x ./kubectl-convert
    
  1. 将 kubectl-convert 可执行文件移动到系统 PATH 环境变量中的一个位置。

    sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert
    sudo chown root: /usr/local/bin/kubectl-convert
    
  1. 验证插件是否安装成功

    kubectl convert --help
    

    如果你没有看到任何错误就代表插件安装成功了。

  1. 安装插件后,清理安装文件:

    rm kubectl-convert kubectl-convert.sha256
    

在 macOS 上卸载 kubectl

根据你安装 kubectl 的方式,使用以下某种方法来卸载:

使用命令行卸载 kubectl

  1. 找到你系统上的 kubectl 可执行文件:

    which kubectl
    
  1. 移除 kubectl 可执行文件:

    sudo rm <path>
    

    <path> 替换为上一步中找到的 kubectl 可执行文件的路径。 例如,sudo rm /usr/local/bin/kubectl

使用 Homebrew 卸载 kubectl

如果你使用 Homebrew 安装了 kubectl,运行以下命令:

brew remove kubectl

接下来

最后修改 October 02, 2023 at 6:18 PM PST: [zh-cn] sync tasks/tools/* and manage-kubernetes-objects/* (6721290e29)