这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
安装工具
在你的计算机上设置 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
用以下命令下载最新发行版:
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
将以非零值退出,并打印如下输出:
kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
说明:下载的 kubectl 与校验和文件版本必须相同。
安装 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
执行测试,以保障你安装的版本是最新的:
用原生包管理工具安装
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 的一部分被安装。
安装 Google Cloud SDK。
运行安装 kubectl
的命令:
gcloud components install kubectl
验证一下,确保安装的是最新的版本:
验证 kubectl 配置
为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个
kubeconfig 文件,
该文件在
kube-up.sh
创建集群时,或成功部署一个 Miniube 集群时,均会自动生成。
通常,kubectl 的配置信息存放于文件 ~/.kube/config
中。
通过获取集群状态的方法,检查是否已恰当的配置了 kubectl:
如果返回一个 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-completion
或 yum 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 会话中。
这里有两种验证方法:
如果 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
下载最新的发行版:
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
将以非零值退出,并打印如下输出:
kubectl: FAILED
shasum: WARNING: 1 computed checksum did NOT match
说明:下载的 kubectl 与校验和文件版本要相同。
将 kubectl 置为可执行文件:
将可执行文件 kubectl 移动到系统可寻址路径 PATH
内的一个位置:
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl
测试一下,确保你安装的是最新的版本:
用 Homebrew 在 macOS 系统上安装
如果你是 macOS 系统,且用的是 Homebrew 包管理工具,
则可以用 Homebrew 安装 kubectl。
运行安装命令:
或
brew install kubernetes-cli
测试一下,确保你安装的是最新的版本:
用 Macports 在 macOS 上安装
如果你用的是 macOS,且用 Macports 包管理工具,则你可以用 Macports 安装kubectl。
运行安装命令:
sudo port selfupdate
sudo port install kubectl
测试一下,确保你安装的是最新的版本:
作为谷歌云 SDK 的一部分,在 macOS 上安装
kubectl 可以作为 Google Cloud SDK 的一部分被安装。
安装 Google Cloud SDK。
运行安装 kubectl
的命令:
gcloud components install kubectl
验证一下,确保安装的是最新的版本:
验证 kubectl 配置
为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个
kubeconfig 文件,
该文件在
kube-up.sh
创建集群时,或成功部署一个 Miniube 集群时,均会自动生成。
通常,kubectl 的配置信息存放于文件 ~/.kube/config
中。
通过获取集群状态的方法,检查是否已恰当的配置了 kubectl:
如果返回一个 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 v2 和 Bash 4.1+。
有鉴于此,为了在 macOS 上使用 kubectl 补全功能,你必须要安装和使用 Bash 4.1+
(说明)。
后续说明假定你用的是 Bash 4.1+(也就是 Bash 4.1 或更新的版本)
升级 Bash
后续说明假定你已使用 Bash 4.1+。你可以运行以下命令检查 Bash 版本:
如果版本太旧,可以用 Homebrew 安装/升级:
重新加载 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 的补全脚本,
有若干种方法可以实现这一点:
总之,重新加载 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 可执行文件
使用下面命令下载最新的发行版本:
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
如果合法,则输出为:
如果检查失败,则 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
使用其他包管理器安装
如果你使用 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://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
如果合法,则输出为:
如果检查失败,则 shasum
退出且状态值为非 0,并打印类似如下的输出:
kubectl: FAILED
shasum: WARNING: 1 computed checksum did NOT match
说明:下载的二进制可执行文件和校验和文件须为同一版本。
设置 kubectl 二进制文件为可执行模式
将 kubectl 二进制文件移动到系统 PATH
环境变量中的某个位置:
sudo mv ./kubectl /usr/local/bin/kubectl && \
sudo chown root: /usr/local/bin/kubectl
测试以确保所安装的版本是最新的:
在 macOS 上使用 Homebrew 安装
如果你使用的是 macOS 系统且使用 Homebrew 包管理器,
你可以使用 Homebrew 来安装 kubectl。
运行安装命令:
或者
brew install kubernetes-cli
测试以确保你安装的版本是最新的:
在 macOS 上用 Macports 安装 kubectl
如果你使用的是 macOS 系统并使用 Macports 包管理器,
你可以通过 Macports 安装 kubectl。
运行安装命令:
sudo port selfupdate
sudo port install kubectl
测试以确保你安装的版本是最新的:
在 Windows 上安装 kubectl
在 Windows 上使用 curl 安装 kubectl 二进制文件
下载最新发行版本 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。
验证二进制可执行文件(可选操作)
下载 kubectl 校验和文件:
curl -LO https://dl.k8s.io/v1.20.15/bin/windows/amd64/kubectl.exe.sha256
使用校验和文件验证 kubectl 可执行二进制文件:
- 将可执行文件放到 PATH 目录下。
测试以确定所下载的 kubectl
版本是正确的的:
说明: 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
目录,并指示它创建配置文件
测试以确保你安装的版本是最新的:
说明: 通过重新运行步骤 1 中列出的两个命令可以更新安装。
在 Windows 系统上用 Chocolatey 或者 Scoop 安装
要在 Windows 上用 Chocolatey 或者
Scoop 命令行安装程序安装 kubectl:
choco install kubernetes-cli
测试以确保你安装的版本是最新的:
kubectl version --client
切换到你的 HOME 目录:
# 如果你在使用 cmd.exe,运行 cd %USERPROFILE%
cd ~
创建 .kube
目录:
进入到刚刚创建的 .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 配置
kubectl 需要一个
kubeconfig 配置文件
使其找到并访问 Kubernetes 集群。当你使用
kube-up.sh
创建 Kubernetes 集群或者使用已经部署好的 Minikube 集群时,
会自动生成 kubeconfig 配置文件。
默认情况下,kubectl 的配置文件位于 ~/.kube/config
。
通过获取集群状态检查 kubectl 是否被正确配置:
如果你看到一个 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
如果你为 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 版本:
如果版本很老,你可以使用 Homebrew 来安装或升级:
重新加载 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 自动补齐脚本。
实现这点有两种方式:
- 如果你是所有 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-completion
或 yum 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 会话中。
这里有两种验证方法:
如果 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 v2 和 Bash 4.1+。
有鉴于此,为了在 macOS 上使用 kubectl 补全功能,你必须要安装和使用 Bash 4.1+
(说明)。
后续说明假定你用的是 Bash 4.1+(也就是 Bash 4.1 或更新的版本)
升级 Bash
后续说明假定你已使用 Bash 4.1+。你可以运行以下命令检查 Bash 版本:
如果版本太旧,可以用 Homebrew 安装/升级:
重新加载 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 的补全脚本,
有若干种方法可以实现这一点:
总之,重新加载 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 的一部分被安装。
安装 Google Cloud SDK。
运行安装 kubectl
的命令:
gcloud components install kubectl
验证一下,确保安装的是最新的版本:
9 - 验证 kubectl 的安装效果
如何验证 kubectl。
为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个
kubeconfig 文件,
该文件在
kube-up.sh
创建集群时,或成功部署一个 Miniube 集群时,均会自动生成。
通常,kubectl 的配置信息存放于文件 ~/.kube/config
中。
通过获取集群状态的方法,检查是否已恰当的配置了 kubectl:
如果返回一个 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