您正在查看 Kubernetes 版本的文档: v1.20

Kubernetes v1.20 版本的文档已不再维护。您现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。

安装并配置 kubectl

使用 Kubernetes 命令行工具 kubectl, 你可以在 Kubernetes 上运行命令。 使用 kubectl,你可以部署应用、检视和管理集群资源、查看日志。 要了解 kubectl 操作的完整列表,请参阅 kubectl 概览

准备开始

你必须使用与集群小版本号差别为一的 kubectl 版本。 例如,1.2 版本的客户端应该与 1.1 版本、1.2 版本和 1.3 版本的主节点一起使用。 使用最新版本的 kubectl 有助于避免无法预料的问题。

在 Linux 上安装 kubectl

在 Linux 上使用 curl 安装 kubectl 可执行文件

  1. 使用下面命令下载最新的发行版本:

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    

    要下载特定版本,将命令中的 $(curl -L -s https://dl.k8s.io/release/stable.txt) 部分替换为指定版本。

    例如,要下载 Linux 上的版本 v1.20.5,输入:

    curl -LO https://dl.k8s.io/release/v1.20.5/bin/linux/amd64/kubectl
    
  1. 验证可执行文件(可选步骤):

    下载 kubectl 校验和文件:

    curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
    

    使用校验和文件检查 kubectl 可执行二进制文件:

    echo "$(<kubectl.sha256) kubectl" | sha256sum --check
    

    如果合法,则输出为:

    kubectl: OK
    

    如果检查失败,则 sha256 退出且状态值非 0 并打印类似如下输出:

    kubectl: FAILED
    sha256sum: WARNING: 1 computed checksum did NOT match
    
    说明:

    所下载的二进制可执行文件和校验和文件须是同一版本。

  1. 安装 kubectl

    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    

    如果你并不拥有目标系统的 root 访问权限,你仍可以将 kubectl 安装到 ~/.local/bin 目录下:

    mkdir -p ~/.local/bin/kubectl
    mv ./kubectl ~/.local/bin/kubectl
    # 之后将 ~/.local/bin/kubectl 添加到环境变量 $PATH 中
    
  1. 测试你所安装的版本是最新的:

    kubectl version --client
    

使用原生包管理器安装


sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl


cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl

使用其他包管理器安装

如果你使用 Ubuntu 或者其他支持 snap 包管理器的 Linux 发行版,kubeclt 可以作为 Snap 应用来安装:

snap install kubectl --classic

kubectl version --client

如果你在使用 Linux 且使用 Homebrew 包管理器, kubectl 也可以用这种方式安装

brew install kubectl

kubectl version --client

在 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 -L -s https://dl.k8s.io/release/stable.txt) 部分替换成你想要的版本。

    例如,要在 macOS 上安装版本 v1.20.5,输入:

    curl -LO https://dl.k8s.io/release/v1.20.5/bin/darwin/amd64/kubectl
    
  1. 检查二进制可执行文件(可选操作)

    下载 kubectl 校验和文件:

    curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
    

    使用校验和文件检查 kubectl 二进制可执行文件:

    echo "$(<kubectl.sha256)  kubectl" | shasum -a 256 --check
    

    如果合法,则输出为:

    kubectl: OK
    

    如果检查失败,则 shasum 退出且状态值为非 0,并打印类似如下的输出:

    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
    

在 macOS 上使用 Homebrew 安装

如果你使用的是 macOS 系统且使用 Homebrew 包管理器, 你可以使用 Homebrew 来安装 kubectl。

  1. 运行安装命令:

    brew install kubectl 
    

    或者

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

    kubectl version --client
    

在 macOS 上用 Macports 安装 kubectl

如果你使用的是 macOS 系统并使用 Macports 包管理器, 你可以通过 Macports 安装 kubectl。

  1. 运行安装命令:

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

    kubectl version --client
    

在 Windows 上安装 kubectl

在 Windows 上使用 curl 安装 kubectl 二进制文件

  1. 下载最新发行版本 v1.20.5

    或者如何你安装了 curl,使用下面的命令:

    curl -LO https://dl.k8s.io/release/v1.20.5/bin/windows/amd64/kubectl.exe
    

    要了解哪个是最新的稳定版本(例如,出于脚本编写目的),可查看 https://dl.k8s.io/release/stable.txt

  1. 验证二进制可执行文件(可选操作)

    下载 kubectl 校验和文件:

    curl -LO https://dl.k8s.io/v1.20.5/bin/windows/amd64/kubectl.exe.sha256
    

    使用校验和文件验证 kubectl 可执行二进制文件:

    • 使用命令行提示符(Commmand Prompt)来手动比较 CertUtil 的输出与 所下载的校验和文件:

      CertUtil -hashfile kubectl.exe SHA256
      type kubectl.exe.sha256
      
    • 使用 PowerShell 的 -eq 操作符来自动完成校验操作,获得 TrueFalse 结果:

      $($(CertUtil -hashfile .\kubectl.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl.exe.sha256)
      
  1. 将可执行文件放到 PATH 目录下。
  1. 测试以确定所下载的 kubectl 版本是正确的的:

    kubectl version --client
    
说明: Docker Desktop for Windows 会将自己的 kubectl 程序添加到 PATH 中。 如果你之前安装过 Docker Desktop,你可能需要将新安装的 PATH 项放到 Docker Desktop 安装程序所添加的目录之前,或者干脆删除 Docker Desktop 所安装的 kubectl

使用 PowerShell 从 PSGallery 安装 kubectl

如果你使用的是 Windows 系统并使用 Powershell Gallery 软件包管理器,你可以使用 PowerShell 安装和更新 kubectl。

  1. 运行安装命令(确保指定 DownloadLocation):

    Install-Script -Name 'install-kubectl' -Scope CurrentUser -Force
    install-kubectl.ps1 [-DownloadLocation <路径名>]
    
    说明: 如果你没有指定 DownloadLocation,那么 kubectl 将安装在用户的 temp 目录中。

    安装程序创建 $HOME/.kube 目录,并指示它创建配置文件

  1. 测试以确保你安装的版本是最新的:

    kubectl version --client
    
说明: 通过重新运行步骤 1 中列出的两个命令可以更新安装。

在 Windows 系统上用 Chocolatey 或者 Scoop 安装

  1. 要在 Windows 上用 Chocolatey 或者 Scoop 命令行安装程序安装 kubectl:

    choco install kubernetes-cli
    

    scoop install kubectl
    
  1. 测试以确保你安装的版本是最新的:

    kubectl version --client
    
  1. 切换到你的 HOME 目录:

    # 如果你在使用 cmd.exe,运行 cd %USERPROFILE%
    cd ~
    
  1. 创建 .kube 目录:

    mkdir .kube
    
  1. 进入到刚刚创建的 .kube 目录:

    cd .kube
    
  1. 配置 kubectl 以使用远程 Kubernetes 集群:

    New-Item config -type file
    
说明: 使用你喜欢的文本编辑器,例如 Notepad,编辑此配置文件。

将 kubectl 作为 Google Cloud SDK 的一部分下载

kubectl 可以作为 Google Cloud SDK 的一部分进行安装。

  1. 安装 Google Cloud SDK

  2. 运行以下命令安装 kubectl

    gcloud components install kubectl
    
  1. 测试以确保你安装的版本是最新的:

    kubectl version --client
    

验证 kubectl 配置

kubectl 需要一个 kubeconfig 配置文件 使其找到并访问 Kubernetes 集群。当你使用 kube-up.sh 创建 Kubernetes 集群或者使用已经部署好的 Minikube 集群时, 会自动生成 kubeconfig 配置文件。 默认情况下,kubectl 的配置文件位于 ~/.kube/config

通过获取集群状态检查 kubectl 是否被正确配置:

kubectl cluster-info

如果你看到一个 URL 被返回,那么 kubectl 已经被正确配置, 能够正常访问你的 Kubernetes 集群。

如果你看到类似以下的信息被返回,那么 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

可选的 kubectl 配置

启用 shell 自动补全功能

kubectl 为 Bash 和 Zsh 支持自动补全功能,可以节省大量输入!

下面是设置 Bash 与 Zsh 下自动补齐的过程(包括 Linux 与 macOS 的差异)。

介绍

用于 Bash 的 kubectl 自动补齐脚本可以用 kubectl completion bash 命令生成。 在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。

不过,补齐脚本依赖于 bash-completion 软件包, 这意味着你必须先安装 bash-completion(你可以通过运行 type _init_completion)来测试是否 你已经安装了这个软件)。

安装 bash-completion

很多包管理器都提供 bash-completion(参见这里)。 你可以通过 apt-get install bash-completionyum install bash-completion 来安装。

上述命令会创建 /usr/share/bash-completion/bash_completion,也就是 bash-completion 的主脚本。 取决于所用的包管理器,你可能必须在你的 ~/.bashrc 中通过 source 源引此文件。

要搞清楚这一点,可以重新加载你的 Shell 并运行 type _init_completion。 如果命令成功,一切就绪;否则你就需要将下面的内容添加到你的 ~/.bashrc 文件中:

source /usr/share/bash-completion/bash_completion

之后,重新加载你的 Shell 并运行 type _init_completion 来检查 bash-completion 是否已 正确安装。

启用 kubectl 自动补齐

你现在需要确定在你的所有 Shell 会话中都源引了 kubectl 自动补齐脚本。 实现这点有两种方式:

  • ~/.bashrc 文件中源引自动补齐脚本

    echo 'source <(kubectl completion bash)' >>~/.bashrc
    
  • 将自动补齐脚本添加到目录 /etc/bash_completion.d

    kubectl completion bash >/etc/bash_completion.d/kubectl
    

如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc
说明: bash-completion 会自动源引 /etc/bash_completion.d 下的所有自动补齐脚本。

两种方法是等价的。重新加载 Shell 之后,kubectl 的自动补齐应该能够使用了。

介绍

用于 Bash 的 kubectl 自动补齐脚本可以用 kubectl completion bash 命令生成。 在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。 不过,补齐脚本依赖于 bash-completion 软件包, 你必须预先安装。

警告: bash-completion 有两个版本,v1 和 v2。 v1 是用于 Bash 3.2 版本的(macOS 上的默认配置),v2 是用于 Bash 4.1 以上版本的。 kubectl 补齐脚本 无法 在 v1 版本的 bash-completion 和 Bash 3.2 上使用, 需要 bash-completion v2Bash 4.1 以上版本。 因此,为了在 macOS 上正常使用 kubectl 自动补齐,你需要安装并使用 Bash 4.1+ 版本(相关指南)。 下面的指令假定你在使用 Bash 4.1+(也就是说 Bash 4.1 及以上版本)。

升级 Bash

这里的命令假定你使用的是 Bash 4.1+。你可以通过下面的命令来检查 Bash 版本:

echo $BASH_VERSION

如果版本很老,你可以使用 Homebrew 来安装或升级:

brew install bash

重新加载 Shell 并验证你使用的版本是期望的版本:

echo $BASH_VERSION $SHELL

Homebrew 通常安装 Bash 到 /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 文件中:

export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"

重新加载你的 Shell 并运行 type _init_completion,验证 bash-completion v2 被正确安装。

启用 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 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:

    echo 'alias k=kubectl' >>~/.bash_profile
    echo 'complete -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 的自动补齐应该可以工作了。

Zsh 的 kubectl 补齐脚本可通过 kubectl completion zsh 命令来生成。 在 Shell 环境中引用自动补齐脚本就可以启用 kubectl 自动补齐。

source <(kubectl completion zsh)

如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:

echo 'alias k=kubectl' >>~/.zshrc
echo 'complete -F __start_kubectl k' >>~/.zshrc

重新加载 Shell 之后,kubectl 的自动补齐应该可以工作了。

如果你看到类似 complete:13: command not found: compdef 这种错误信息, 可以将下面的命令添加到你的 ~/.zshrc 文件的文件头:

autoload -Uz compinit
compinit

接下来

最后修改 January 29, 2021 at 5:06 PM PST: [zh] sync install kubectl (cb1641b0c)