Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Install and Set Up kubectl on Windows
在 Windows 上安装 kubectl
准备开始
kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.29 版本的客户端能与 v1.28、 v1.29 和 v1.30 版本的控制面通信。 用最新兼容版的 kubectl 有助于避免不可预见的问题。
在 Windows 上安装 kubectl
在 Windows 系统中安装 kubectl 有如下几种方法:
用 curl 在 Windows 上安装 kubectl
-
下载最新补丁版 1.29: kubectl 1.29.2。
如果你已安装了
curl
,也可以使用此命令:curl.exe -LO "https://dl.k8s.io/release/v1.29.2/bin/windows/amd64/kubectl.exe"
说明:要想找到最新稳定的版本(例如:为了编写脚本),可以看看这里 https://dl.k8s.io/release/stable.txt。
-
验证该可执行文件(可选步骤)
下载
kubectl
校验和文件:curl.exe -LO "https://dl.k8s.io/v1.29.2/bin/windows/amd64/kubectl.exe.sha256"
基于校验和文件,验证
kubectl
的可执行文件:-
在命令行环境中,手工对比
CertUtil
命令的输出与校验和文件:CertUtil -hashfile kubectl.exe SHA256 type kubectl.exe.sha256
-
用 PowerShell 自动验证,用运算符
-eq
来直接取得True
或False
的结果:$(Get-FileHash -Algorithm SHA256 .\kubectl.exe).Hash -eq $(Get-Content .\kubectl.exe.sha256)
-
-
将
kubectl
二进制文件夹追加或插入到你的PATH
环境变量中。 -
测试一下,确保此
kubectl
的版本和期望版本一致:kubectl version --client
或者使用下面命令来查看版本的详细信息:
kubectl version --client --output=yaml
Windows 版的 Docker Desktop
将其自带版本的 kubectl
添加到 PATH
。
如果你之前安装过 Docker Desktop,可能需要把此 PATH
条目置于 Docker Desktop 安装的条目之前,
或者直接删掉 Docker Desktop 的 kubectl
。
在 Windows 上用 Chocolatey、Scoop 或 winget 安装
-
要在 Windows 上安装 kubectl,你可以使用包管理器 Chocolatey、 命令行安装器 Scoop 或包管理器 winget。
choco install kubernetes-cli
scoop install kubectl
winget install -e --id Kubernetes.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 配置
为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个
kubeconfig 文件,
该文件在
kube-up.sh
创建集群时,或成功部署一个 Minikube 集群时,均会自动生成。
通常,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
排查"找不到身份验证提供商"的错误信息
在 Kubernetes 1.26 中,kubectl 删除了以下云提供商托管的 Kubernetes 产品的内置身份验证。 这些提供商已经发布了 kubectl 插件来提供特定于云的身份验证。 有关说明,请参阅以下提供商文档:
- Azure AKS:kubelogin 插件
- CKE:gke-gcloud-auth-plugin
(还可能会有其他原因会看到相同的错误信息,和这个更改无关。)
kubectl 可选配置和插件
启用 shell 自动补全功能
kubectl 为 Bash、Zsh、Fish 和 PowerShell 提供自动补全功能,可以为你节省大量的输入。
下面是设置 PowerShell 自动补全功能的操作步骤。
你可以使用命令 kubectl completion powershell
生成 PowerShell 的 kubectl 自动补全脚本。
如果需要自动补全在所有 Shell 会话中生效,请将以下命令添加到 $PROFILE
文件中:
kubectl completion powershell | Out-String | Invoke-Expression
此命令将在每次 PowerShell 启动时重新生成自动补全脚本。你还可以将生成的自动补全脚本添加到 $PROFILE
文件中。
如果需要将自动补全脚本直接添加到 $PROFILE
文件中,请在 PowerShell 命令行运行以下命令:
kubectl completion powershell >> $PROFILE
完成上述操作后重启 Shell,kubectl 的自动补全就可以工作了。
安装 kubectl convert
插件
一个 Kubernetes 命令行工具 kubectl
的插件,允许你将清单在不同 API 版本间转换。
这对于将清单迁移到新的 Kubernetes 发行版上未被废弃的 API 版本时尤其有帮助。
更多信息请访问迁移到非弃用 API
-
用以下命令下载最新发行版:
curl.exe -LO "https://dl.k8s.io/release/v1.29.2/bin/windows/amd64/kubectl-convert.exe"
-
验证该可执行文件(可选步骤)。
下载
kubectl-convert
校验和文件:curl.exe -LO "https://dl.k8s.io/v1.29.2/bin/windows/amd64/kubectl-convert.exe.sha256"
基于校验和验证
kubectl-convert
的可执行文件:-
用提示的命令对
CertUtil
的输出和下载的校验和文件进行手动比较。CertUtil -hashfile kubectl-convert.exe SHA256 type kubectl-convert.exe.sha256
-
使用 PowerShell
-eq
操作使验证自动化,获得True
或者False
的结果:$($(CertUtil -hashfile .\kubectl-convert.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl-convert.exe.sha256)
-
-
将
kubectl-convert
二进制文件夹附加或添加到你的PATH
环境变量中。 -
验证插件是否安装成功。
kubectl convert --help
如果你没有看到任何错误就代表插件安装成功了。
-
安装插件后,清理安装文件:
del kubectl-convert.exe kubectl-convert.exe.sha256
接下来
- 安装 Minikube。
- 有关创建集群的更多信息,请参阅入门指南。
- 学习如何启动并对外公开你的应用程序。
- 如果你需要访问其他人创建的集群, 请参阅共享集群接入文档。
- 阅读 kubectl 参考文档。