安装并配置 kubectl

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

准备开始

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

在 Linux 上安装 kubectl

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

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

    1. curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"

    要下载特定版本, $(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) 部分替换为指定版本。

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

    1. curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/amd64/kubectl
  2. 标记 kubectl 文件为可执行:

    1. chmod +x ./kubectl
  3. 将文件放到 PATH 路径下:

    1. sudo mv ./kubectl /usr/local/bin/kubectl
  4. 测试你所安装的版本是最新的:

    1. kubectl version --client

使用原生包管理器安装

  1. sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
  2. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  3. echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
  4. sudo apt-get update
  5. sudo apt-get install -y kubectl
  1. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
  5. enabled=1
  6. gpgcheck=1
  7. repo_gpgcheck=1
  8. gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
  9. EOF
  10. yum install -y kubectl

使用其他包管理器安装

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

  1. snap install kubectl --classic
  2. kubectl version --client

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

  1. brew install kubectl
  2. kubectl version --client

在 macOS 上安装 kubectl

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

  1. 下载最新发行版本:

    1. curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"

    要下载特定版本,可将上面命令中的$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) 部分替换成你想要的版本。

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

    1. curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/darwin/amd64/kubectl

    将二进制文件标记为可执行:

    1. chmod +x ./kubectl
  2. 将二进制文件放入 PATH 目录下:

    1. sudo mv ./kubectl /usr/local/bin/kubectl
  3. 测试以确保所安装的版本是最新的:

    1. kubectl version --client

在 macOS 上使用 Homebrew 安装

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

  1. 运行安装命令:

    1. brew install kubectl

    或者

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

    1. kubectl version --client

在 macOS 上用 Macports 安装 kubectl

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

  1. 运行安装命令:

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

    1. kubectl version --client

在 Windows 上安装 kubectl

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

  1. 此链接 下载最新发行版本 v1.20.0。

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

    1. curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/windows/amd64/kubectl.exe

    要了解最新的稳定版本(例如,出于脚本编写目的),可查看 https://storage.googleapis.com/kubernetes-release/release/stable.txt

  2. 将可执行文件放到 PATH 目录下。

  3. 测试以确定所下载的 kubectl 版本是正确的的:

    1. kubectl version --client

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

使用 PowerShell 从 PSGallery 安装 kubectl

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

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

    1. Install-Script -Name install-kubectl -Scope CurrentUser -Force
    2. install-kubectl.ps1 [-DownloadLocation <path>]

    说明: 如果你没有指定 DownloadLocation,那么 kubectl 将安装在用户的临时目录中。

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

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

    1. kubectl version --client

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

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

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

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

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

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

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

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

    1. New-Item config -type file

说明: 使用你喜欢的文本编辑器,例如 Notepad,编辑此配置文件。

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

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

  1. 安装 Google Cloud SDK

  2. 运行以下命令安装 kubectl

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

    1. kubectl version --client

验证 kubectl 配置

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

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

  1. kubectl cluster-info

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

如果你看到类似以下的信息被返回,那么 kubectl 没有被正确配置,无法正常访问你的 Kubernetes 集群。

  1. The connection to the server <server-name:port> was refused - did you specify the right host or port?

例如,如果你打算在笔记本电脑(本地)上运行 Kubernetes 集群,则需要首先安装 minikube 等工具,然后重新运行上述命令。

如果 kubectl cluster-info 能够返回 URL 响应,但你无法访问你的集群,可以使用下面的命令检查配置是否正确:

  1. 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 文件中:

  1. source /usr/share/bash-completion/bash_completion

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

启用 kubectl 自动补齐

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

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

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

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

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

  1. echo 'alias k=kubectl' >>~/.bashrc
  2. 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 版本:

  1. echo $BASH_VERSION

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

  1. brew install bash

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

  1. 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 来安装:

  1. brew install bash-completion@2

就像命令的输出所提示的,你应该将下面的内容添加到 ~/.bash_profile 文件中:

  1. export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
  2. [[ -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 文件中源引自动补齐脚本

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

    1. kubectl completion bash >//usr/local/etc/bash_completion.d/kubectl
  • 如果你为 kubectl 命令设置了别名(alias),你可以扩展 Shell 补齐,使之能够与别名一起使用:

    1. echo 'alias k=kubectl' >>~/.bash_profile
    2. 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 自动补齐。

  1. source <(kubectl completion zsh)

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

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

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

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

  1. autoload -Uz compinit
  2. compinit

接下来