安装并配置 kubectl
使用 Kubernetes 命令行工具 kubectl, 你可以在 Kubernetes 上运行命令。 使用 kubectl,你可以部署应用、检视和管理集群资源、查看日志。 要了解 kubectl 操作的完整列表,请参阅 kubectl 概览。
准备开始
你必须使用与集群小版本号差别为一的 kubectl 版本。 例如,1.2 版本的客户端应该与 1.1 版本、1.2 版本和 1.3 版本的主节点一起使用。 使用最新版本的 kubectl 有助于避免无法预料的问题。
在 Linux 上安装 kubectl
在 Linux 上使用 curl 安装 kubectl 可执行文件
-
使用下面命令下载最新的发行版本:
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.0,输入:
curl -LO https://dl.k8s.io/release/v1.20.0/bin/linux/amd64/kubectl
-
验证可执行文件(可选步骤):
下载 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
说明:所下载的二进制可执行文件和校验和文件须是同一版本。
-
安装 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 中
-
测试你所安装的版本是最新的:
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
使用其他包管理器安装
在 macOS 上安装 kubectl
在 macOS 上使用 curl 安装 kubectl 可执行文件
-
下载最新发行版本:
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.0,输入:
curl -LO https://dl.k8s.io/release/v1.20.0/bin/darwin/amd64/kubectl
-
检查二进制可执行文件(可选操作)
下载 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
说明:下载的二进制可执行文件和校验和文件须为同一版本。
-
设置 kubectl 二进制文件为可执行模式
chmod +x ./kubectl
-
将 kubectl 二进制文件移动到系统
PATH
环境变量中的某个位置:sudo mv ./kubectl /usr/local/bin/kubectl && \ sudo chown root: /usr/local/bin/kubectl
-
测试以确保所安装的版本是最新的:
kubectl version --client
在 macOS 上使用 Homebrew 安装
如果你使用的是 macOS 系统且使用 Homebrew 包管理器, 你可以使用 Homebrew 来安装 kubectl。
-
运行安装命令:
brew install kubectl
或者
brew install kubernetes-cli
-
测试以确保你安装的版本是最新的:
kubectl version --client
在 macOS 上用 Macports 安装 kubectl
如果你使用的是 macOS 系统并使用 Macports 包管理器, 你可以通过 Macports 安装 kubectl。
-
运行安装命令:
sudo port selfupdate sudo port install kubectl
-
测试以确保你安装的版本是最新的:
kubectl version --client
在 Windows 上安装 kubectl
在 Windows 上使用 curl 安装 kubectl 二进制文件
-
或者如何你安装了
curl
,使用下面的命令:curl -LO https://dl.k8s.io/release/v1.20.0/bin/windows/amd64/kubectl.exe
要了解哪个是最新的稳定版本(例如,出于脚本编写目的),可查看 https://dl.k8s.io/release/stable.txt。
-
验证二进制可执行文件(可选操作)
下载 kubectl 校验和文件:
curl -LO https://dl.k8s.io/v1.20.0/bin/windows/amd64/kubectl.exe.sha256
使用校验和文件验证 kubectl 可执行二进制文件:
-
使用命令行提示符(Commmand Prompt)来手动比较
CertUtil
的输出与 所下载的校验和文件:CertUtil -hashfile kubectl.exe SHA256 type kubectl.exe.sha256
-
使用 PowerShell 的
-eq
操作符来自动完成校验操作,获得True
或False
结果:$($(CertUtil -hashfile .\kubectl.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl.exe.sha256)
-
- 将可执行文件放到 PATH 目录下。
-
测试以确定所下载的
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。
-
运行安装命令(确保指定
DownloadLocation
):Install-Script -Name 'install-kubectl' -Scope CurrentUser -Force install-kubectl.ps1 [-DownloadLocation <路径名>]
说明: 如果你没有指定DownloadLocation
,那么kubectl
将安装在用户的temp
目录中。安装程序创建
$HOME/.kube
目录,并指示它创建配置文件
-
测试以确保你安装的版本是最新的:
kubectl version --client
说明: 通过重新运行步骤 1 中列出的两个命令可以更新安装。
在 Windows 系统上用 Chocolatey 或者 Scoop 安装
-
要在 Windows 上用 Chocolatey 或者 Scoop 命令行安装程序安装 kubectl:
choco install kubernetes-cli
scoop install kubectl
-
测试以确保你安装的版本是最新的:
kubectl version --client
-
切换到你的 HOME 目录:
# 如果你在使用 cmd.exe,运行 cd %USERPROFILE% cd ~
-
创建
.kube
目录:mkdir .kube
-
进入到刚刚创建的
.kube
目录:cd .kube
-
配置 kubectl 以使用远程 Kubernetes 集群:
New-Item config -type file
说明: 使用你喜欢的文本编辑器,例如 Notepad,编辑此配置文件。
将 kubectl 作为 Google Cloud SDK 的一部分下载
kubectl 可以作为 Google Cloud SDK 的一部分进行安装。
-
安装 Google Cloud SDK。
-
运行以下命令安装
kubectl
:gcloud components install kubectl
-
测试以确保你安装的版本是最新的:
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-completion
或 yum 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 v2 和 Bash 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
接下来
- 安装 Minikube
- 参阅入门指南,了解创建集群相关的信息
- 了解如何启动和暴露你的应用
- 如果你需要访问别人创建的集群,参考 共享集群访问文档
- 阅读 kubectl 参考文档