安装并配置 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://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,输入:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/amd64/kubectl
标记 kubectl 文件为可执行:
chmod +x ./kubectl
将文件放到 PATH 路径下:
sudo mv ./kubectl /usr/local/bin/kubectl
测试你所安装的版本是最新的:
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 可执行文件
下载最新发行版本:
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,输入:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/darwin/amd64/kubectl
将二进制文件标记为可执行:
chmod +x ./kubectl
将二进制文件放入 PATH 目录下:
sudo mv ./kubectl /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 二进制文件
从此链接 下载最新发行版本 v1.20.0。
或者如何你安装了
curl
,使用下面的命令: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。
将可执行文件放到 PATH 目录下。
测试以确定所下载的
kubectl
版本是正确的的: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。
运行安装命令(确保指定
DownloadLocation
):Install-Script -Name install-kubectl -Scope CurrentUser -Force
install-kubectl.ps1 [-DownloadLocation <path>]
说明: 如果你没有指定
DownloadLocation
,那么kubectl
将安装在用户的临时目录中。安装程序创建
$ 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 参考文档