'kubectl get pods'命令在 Windows 上失败,在 WSL2 上工作



kubernetes文档包含一个示例命令,用于按pod列出容器映像:

List Container images by Pod

可以通过使用range操作来逐个遍历元素来进一步控制格式。

kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"n"}{.metadata.name}{":t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |
sort

当我在我的Debian WSL2实例中运行这个命令时,它正确地列出了我在所有名称空间中运行的每个pod的容器。

当我在Windows命令行中运行相同的命令时,我得到一个错误:error: a resource cannot be retrieved by name across all namespaces:

C:workspace>kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"n"}{.metadata.name}{":t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' | sort
error: a resource cannot be retrieved by name across all namespaces

这是kubectl的错误,还是这个命令只是*nix ?是否有一个独立于操作系统的命令,可以跨所有名称空间通过pod获取容器映像?

(我在WSL2上运行Debian, Windows 10企业版。Docker Desktop使用WSL2集成,K8S与minikube.)

选自k8s官方文件:

在Windows上,你必须双引号引用任何包含空格的JSONPath模板(不像上面的bash那样单引号)。这反过来意味着必须在模板中的任何文字周围使用单引号或转义双引号。例如:kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{'t'}{.status.startTime}{'n'}{end}"

我想这会解决你的问题。

最新更新