这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

安装工具

在你的计算机上设置 Kubernetes 工具。

kubectl

Kubernetes 命令行工具,kubectl,使得你可以对 Kubernetes 集群运行命令。 你可以使用 kubectl 来部署应用、监测和管理集群资源以及查看日志。

有关更多信息,包括 kubectl 操作的完整列表,请参见kubectl 参考文件

kubectl 可安装在各种 Linux 平台、 macOS 和 Windows 上。 在下面找到你喜欢的操作系统。

kind

kind 让你能够在本地计算机上运行 Kubernetes。 kind 要求你安装并配置好 Docker

kind 快速入门页面展示了 开始使用 kind 所需要完成的操作。

查看 kind 的快速入门指南

minikube

kind 类似,minikube 是一个工具, 能让你在本地运行 Kubernetes。 minikube 在你本地的个人计算机(包括 Windows、macOS 和 Linux PC)运行一个单节点的 Kubernetes 集群,以便你来尝试 Kubernetes 或者开展每天的开发工作。

如果你关注如何安装此工具,可以按官方的 Get Started!指南操作。

查看 minikube 快速入门指南

当你拥有了可工作的 minikube 时,就可以用它来 运行示例应用了。

kubeadm

你可以使用 kubeadm 工具来 创建和管理 Kubernetes 集群。 该工具能够执行必要的动作并用一种用户友好的方式启动一个可用的、安全的集群。

安装 kubeadm 展示了如何安装 kubeadm 的过程。 一旦安装了 kubeadm,你就可以使用它来 创建一个集群

查看 kubeadm 安装指南

1 - 在 Linux 系统中安装并设置 kubectl

准备开始

kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.2 版本的客户端只能与 v1.1、v1.2 和 v1.3 版本的集群一起工作。 用最新版的 kubectl 有助于避免不可预见的问题。

在 Linux 系统中安装 kubectl

在 Linux 系统中安装 kubectl 有如下几种方法:

用 curl 在 Linux 系统中安装 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.15 版本,请输入:

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

    下载 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 将以非零值退出,并打印如下输出:

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

    下载的 kubectl 与校验和文件版本必须相同。

  3. 安装 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
    # and then add ~/.local/bin/kubectl to $PATH
    
  4. 执行测试,以保障你安装的版本是最新的:

    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 或其他 Linux 发行版,内建支持 snap 包管理工具, 则可用 snap 命令安装 kubectl。

snap install kubectl --classic
kubectl version --client

如果你使用 Linux 系统,并且装了 Homebrew 包管理工具, 则可以使用这种方式安装 kubectl。

brew install kubectl
kubectl version --client

作为谷歌云 SDK 的一部分,在 Linux 上安装

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

  1. 安装 Google Cloud SDK

  2. 运行安装 kubectl 的命令:

    gcloud components install kubectl
    
  3. 验证一下,确保安装的是最新的版本:

    kubectl version --client
    

验证 kubectl 配置

为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 kubeconfig 文件, 该文件在 kube-up.sh 创建集群时,或成功部署一个 Miniube 集群时,均会自动生成。 通常,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

kubectl 的可选配置

启用 shell 自动补全功能

kubectl 为 Bash 和 Zsh 提供自动补全功能,可以减轻许多输入的负担。

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

简介

kubectl 的 Bash 补全脚本可以用命令 kubectl completion bash 生成。 在 shell 中导入(Sourcing)补全脚本,将启用 kubectl 自动补全功能。

然而,补全脚本依赖于工具 bash-completion, 所以要先安装它(可以用命令 type _init_completion 检查 bash-completion 是否已安装)。

安装 bash-completion

很多包管理工具均支持 bash-completion(参见这里)。 可以通过 apt-get install bash-completionyum install bash-completion 等命令来安装它。

上述命令将创建文件 /usr/share/bash-completion/bash_completion,它是 bash-completion 的主脚本。 依据包管理工具的实际情况,你需要在 ~/.bashrc 文件中手工导入此文件。

要查看结果,请重新加载你的 shell,并运行命令 type _init_completion。 如果命令执行成功,则设置完成,否则将下面内容添加到文件 ~/.bashrc 中:

source /usr/share/bash-completion/bash_completion

重新加载 shell,再输入命令 type _init_completion 来验证 bash-completion 的安装状态。

启动 kubectl 自动补全功能

你现在需要确保一点:kubectl 补全脚本已经导入(sourced)到 shell 会话中。 这里有两种验证方法:

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

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

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

如果 kubectl 有关联的别名,你可以扩展 shell 补全来适配此别名:

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc
说明:

bash-completion 负责导入 /etc/bash_completion.d 目录中的所有补全脚本。

两种方式的效果相同。重新加载 shell 后,kubectl 自动补全功能即可生效。

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

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

source <(kubectl completion zsh)

如果你为 kubectl 定义了别名,可以扩展脚本补全,以兼容该别名。

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

接下来

2 - 在 macOS 系统上安装和设置 kubectl

准备开始

kubectl 版本和集群之间的差异必须在一个小版本号之内。 例如:v1.2 版本的客户端只能与 v1.1、v1.2 和 v1.3 版本的集群一起工作。 用最新版本的 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 -L -s https://dl.k8s.io/release/stable.txt)。 例如:要在 macOS 系统中下载 v1.20.15 版本,则输入:

    curl -LO https://dl.k8s.io/release/v1.20.15/bin/darwin/amd64/kubectl
    
  2. 验证可执行文件(可选操作)

    下载 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 将以非零值退出,并打印如下输出:

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

    下载的 kubectl 与校验和文件版本要相同。

  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
    

用 Homebrew 在 macOS 系统上安装

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

  1. 运行安装命令:

    brew install kubectl 
    

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

    kubectl version --client
    

用 Macports 在 macOS 上安装

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

  1. 运行安装命令:

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

    kubectl version --client
    

作为谷歌云 SDK 的一部分,在 macOS 上安装

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

  1. 安装 Google Cloud SDK

  2. 运行安装 kubectl 的命令:

    gcloud components install kubectl
    
  3. 验证一下,确保安装的是最新的版本:

    kubectl version --client
    

验证 kubectl 配置

为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 kubeconfig 文件, 该文件在 kube-up.sh 创建集群时,或成功部署一个 Miniube 集群时,均会自动生成。 通常,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

可选的 kubectl 配置

启用 shell 自动补全功能

kubectl 为 Bash 和 Zsh 提供自动补全功能,这可以节省许多输入的麻烦。

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

简介

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

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

警告:

bash-completion 有两个版本:v1 和 v2。v1 对应 Bash3.2(也是 macOS 的默认安装版本),v2 对应 Bash 4.1+。 kubectl 的补全脚本无法适配 bash-completion v1 和 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 通常把它安装为 /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 环境中均已导入(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 -F __start_kubectl k' >>~/.bash_profile
    
  • 如果你是用 Homebrew 安装的 kubectl(如上所述), 那么 kubectl 补全脚本应该已经安装到目录 /usr/local/etc/bash_completion.d/kubectl 中了。 这种情况下,你什么都不需要做。

    说明:

    用 Hommbrew 安装的 bash-completion v2 会初始化 目录 BASH_COMPLETION_COMPAT_DIR 中的所有文件,这就是后两种方法能正常工作的原因。

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

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

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

source <(kubectl completion zsh)

如果你为 kubectl 定义了别名,可以扩展脚本补全,以兼容该别名。

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

接下来

3 - 安装并配置 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.15,输入:

    curl -LO https://dl.k8s.io/release/v1.20.15/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.15,输入:

    curl -LO https://dl.k8s.io/release/v1.20.15/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.15

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

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

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

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

    下载 kubectl 校验和文件:

    curl -LO https://dl.k8s.io/v1.20.15/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

接下来

4 - Linux 系统中的 bash 自动补全功能

Linux 系统中 bash 自动补全功能的一些可选配置。

简介

kubectl 的 Bash 补全脚本可以用命令 kubectl completion bash 生成。 在 shell 中导入(Sourcing)补全脚本,将启用 kubectl 自动补全功能。

然而,补全脚本依赖于工具 bash-completion, 所以要先安装它(可以用命令 type _init_completion 检查 bash-completion 是否已安装)。

安装 bash-completion

很多包管理工具均支持 bash-completion(参见这里)。 可以通过 apt-get install bash-completionyum install bash-completion 等命令来安装它。

上述命令将创建文件 /usr/share/bash-completion/bash_completion,它是 bash-completion 的主脚本。 依据包管理工具的实际情况,你需要在 ~/.bashrc 文件中手工导入此文件。

要查看结果,请重新加载你的 shell,并运行命令 type _init_completion。 如果命令执行成功,则设置完成,否则将下面内容添加到文件 ~/.bashrc 中:

source /usr/share/bash-completion/bash_completion

重新加载 shell,再输入命令 type _init_completion 来验证 bash-completion 的安装状态。

启动 kubectl 自动补全功能

你现在需要确保一点:kubectl 补全脚本已经导入(sourced)到 shell 会话中。 这里有两种验证方法:

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

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

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

如果 kubectl 有关联的别名,你可以扩展 shell 补全来适配此别名:

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc
说明:

bash-completion 负责导入 /etc/bash_completion.d 目录中的所有补全脚本。

两种方式的效果相同。重新加载 shell 后,kubectl 自动补全功能即可生效。

5 - macOS 系统上的 bash 自动补全

在 macOS 上实现 Bash 自动补全的一些可选配置。

简介

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

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

警告:

bash-completion 有两个版本:v1 和 v2。v1 对应 Bash3.2(也是 macOS 的默认安装版本),v2 对应 Bash 4.1+。 kubectl 的补全脚本无法适配 bash-completion v1 和 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 通常把它安装为 /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 环境中均已导入(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 -F __start_kubectl k' >>~/.bash_profile
    
  • 如果你是用 Homebrew 安装的 kubectl(如上所述), 那么 kubectl 补全脚本应该已经安装到目录 /usr/local/etc/bash_completion.d/kubectl 中了。 这种情况下,你什么都不需要做。

    说明:

    用 Hommbrew 安装的 bash-completion v2 会初始化 目录 BASH_COMPLETION_COMPAT_DIR 中的所有文件,这就是后两种方法能正常工作的原因。

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

6 - zsh 自动补全

zsh 自动补全的一些可选配置

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

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

source <(kubectl completion zsh)

如果你为 kubectl 定义了别名,可以扩展脚本补全,以兼容该别名。

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

7 - 后续内容

安装 kubectl 之后,还可以做些什么?

8 - 通过 gcloud 安装 kubectl

用各个特定操作系统标签页中包含的 gcloud 指令片段安装 kubectl。

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

  1. 安装 Google Cloud SDK

  2. 运行安装 kubectl 的命令:

    gcloud components install kubectl
    
  3. 验证一下,确保安装的是最新的版本:

    kubectl version --client
    

9 - 验证 kubectl 的安装效果

如何验证 kubectl。

为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 kubeconfig 文件, 该文件在 kube-up.sh 创建集群时,或成功部署一个 Miniube 集群时,均会自动生成。 通常,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