在 macOS 上安装和设置 kubectl

开始之前

你必须使用与集群次版本差异在一个版本之内的 kubectl 版本。例如,v1.32 客户端可以与 v1.31、v1.32 和 v1.33 控制平面通信。使用最新兼容版本的 kubectl 有助于避免无法预见的问题。

在 macOS 上安装 kubectl

以下是在 macOS 上安装 kubectl 的方法

在 macOS 上使用 curl 安装 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"
       
  2. 验证二进制文件(可选)

    下载 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
    
  3. 使 kubectl 二进制文件可执行。

    chmod +x ./kubectl
    
  4. 将 kubectl 二进制文件移动到系统 PATH 上的文件位置。

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

    kubectl version --client
    

    或者使用此命令查看详细的版本信息

    kubectl version --client --output=yaml
    
  6. 安装并验证 kubectl 后,删除校验和文件

    rm kubectl.sha256
    

在 macOS 上使用 Homebrew 安装

如果你在 macOS 上并且使用 Homebrew 包管理器,你可以使用 Homebrew 安装 kubectl。

  1. 运行安装命令

    brew install kubectl
    

    brew install kubernetes-cli
    
  2. 测试以确保你安装的版本是最新的

    kubectl version --client
    

在 macOS 上使用 Macports 安装

如果你在 macOS 上并且使用 Macports 包管理器,你可以使用 Macports 安装 kubectl。

  1. 运行安装命令

    sudo port selfupdate
    sudo port install kubectl
    
  2. 测试以确保你安装的版本是最新的

    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

排查 “No Auth Provider Found” 错误消息

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

(也可能有其他原因导致出现相同的错误消息,与此更改无关。)

可选的 kubectl 配置和插件

启用 Shell 自动补全

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

以下是为 Bash、Fish 和 Zsh 设置自动补全的步骤。

简介

Bash 的 kubectl 补全脚本可以使用 kubectl completion bash 生成。在你的 Shell 中使用此脚本会启用 kubectl 补全。

但是,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 自动补全

你现在必须确保 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 中。在这种情况下,你无需执行任何操作。

无论如何,在重新加载你的 Shell 后,kubectl 补全应该可以正常工作了。

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 版本之间转换清单文件。这对于使用较新的 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"
       
  2. 验证二进制文件(可选)

    下载 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
    
  3. 使 kubectl-convert 二进制文件可执行:

    chmod +x ./kubectl-convert
    
  4. 将 kubectl-convert 二进制文件移动到你系统 PATH 上的一个文件位置。

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

    kubectl convert --help
    

    如果你没有看到错误,则表示插件已成功安装。

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

    rm kubectl-convert kubectl-convert.sha256
    

在 macOS 上卸载 kubectl

根据你安装 kubectl 的方式,使用以下方法之一。

使用命令行卸载 kubectl

  1. 在你的系统上找到 kubectl 二进制文件:

    which kubectl
    
  2. 删除 kubectl 二进制文件:

    sudo rm <path>
    

    <path> 替换为上一步中 kubectl 二进制文件的路径。例如,sudo rm /usr/local/bin/kubectl

使用 homebrew 卸载 kubectl

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

brew remove kubectl

下一步

上次修改时间:2023 年 12 月 03 日下午 7:17 PST:修复删除步骤 (7b2723fba7)