在Windows上运行kubectl diff时出现错误:在PATH中找不到可执行文件。

8

我在使用Windows的Kubectl时遇到了问题:

C:\> kubectl diff -f app.yml
error: executable file not found in %PATH%

Kubernetes是与Docker Desktop一起安装的。无论使用哪个文件作为参数(即使.yml文件不包含任何内容),都会出现相同的错误。

版本:

C:\> kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:36:53Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.6", GitCommit:"96fac5cd13a5dc064f7d9f4f23030a6aeface6cc", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:16Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}

请问您能否检查一下kubectl的系统PATH环境变量是否正确设置在高级系统设置 -> 高级 -> 环境变量 -> Path中? - Wytrzymały Wiktor
是的,它设置正确。即使我从其文件夹显式调用kubectl.exe,错误也会出现。 但是错误似乎不是Windows路径错误。它看起来像是Docker内部的Unix错误。 - Dennis Meissel
1
我同意,我们可以做得更好。我已经打开了一个问题:https://github.com/kubernetes/kubernetes/issues/87343 - Antoine Pelisse
6个回答

7
在我的本地机器上安装了 Windows 版的 DiffUtils 并重新启动后,一切正常。请参考DiffUtils for Windows进行安装。

6

尝试使用choco进行安装 - 无需重新启动Windows。

choco install diffutils

3

kubectl diff 命令在底层使用了 Unix 的 diff 程序。假设您还没有安装它,您可以通过 WSL 或其他方式获取类 Unix 程序进行安装。


可能是这样,但是k8s正在Docker桌面下运行,如果问题出在那里,我不知道如何告诉Docker安装diff。 - Dennis Meissel
这不是服务器端的问题,而是 kubectl 本身正在尝试运行 diff。 - coderanger
1
@OhHiMark 是的,我已经安装了 diffutils,现在它可以工作了。 - Dennis Meissel

2
由于我和问题的提出者遇到了基本相同的问题,所以解决方案需要一些额外的步骤:首先安装 DiffUtils for Windows,然后将bin文件夹(默认情况下位于C:\Program Files (x86)\GnuWin32\bin)映射到我的Win10 PATH变量中。
我认为DiffUtils的安装程序应该自动进行映射,但由于某种原因失败了,导致我不得不手动操作。

1
如果您已经安装了首选的差异工具,请设置$Env:KUBECTL_EXTERNAL_DIFF。例如:
$Env:KUBECTL_EXTERNAL_DIFF="C:\Progra~1\WinMerge\WinMergeU.exe"

0

我遇到了同样的错误。我在我的Windows 10机器上安装了git bash,所以尝试了一下,结果成功了。 正如@coderanger所提到的,它在内部使用UNIX diff程序,而git bash可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接