您正在查看 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 可执行文件
使用下面命令下载最新的发行版本:
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
验证可执行文件(可选步骤):
下载 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.15,输入:
curl -LO https://dl.k8s.io/release/v1.20.15/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.15/bin/windows/amd64/kubectl.exe
要了解哪个是最新的稳定版本(例如,出于脚本编写目的),可查看 https://dl.k8s.io/release/stable.txt。
验证二进制可执行文件(可选操作)
下载 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
操作符来自动完成校验操作,获得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 参考文档