Kubectl Get Pods命令在Windows上失败,但在WSL2上有效 [英] 'kubectl get pods' command fails on Windows, works on WSL2
本文介绍了Kubectl Get Pods命令在Windows上失败,但在WSL2上有效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Kubernetes文档includes按Pod列出容器镜像的命令示例:
按Pod列出容器图像
可以通过使用范围操作逐个迭代元素来进一步控制格式。
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{" "}{.metadata.name}{": "}{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[*]}{"
"}{.metadata.name}{": "}{range .spec.containers[*]}{.image}{", "}{end}{end}' | sort
error: a resource cannot be retrieved by name across all namespaces
这是kubectl的错误,还是此命令*nix仅有?是否有独立于操作系统的命令,用于在所有命名空间中按实例获取容器镜像?
(我在WSL2、Windows 10企业版上运行Debian。使用WSL2集成的Docker台式机、带mini kube的K8。)
推荐答案
来自K8官方doc:
在Windows上,必须用双引号将任何包含空格的JSONPath模板引起来(而不是上面为bash所示的单引号)。这又意味着您必须在模板中的任何文字两边使用单引号或转义双引号。例如:kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{' '}{.status.startTime}{'
'}{end}"
我认为这将解决您的问题。
这篇关于Kubectl Get Pods命令在Windows上失败,但在WSL2上有效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文