所以,我试图从所有命名空间中提取所有内部 Pod 端口的列表,并且我有以下命令,该命令有效,但仅适用于特定的 Pod/命名空间/rc。
PS C:\Users\> kubectl get -o jsonpath="{.spec.template.spec.containers[*]['ports','name']}" deployments rke2-coredns-rke2-coredns -n kube-system
[{"containerPort":53,"name":"udp-53","protocol":"UDP"},{"containerPort":53,"name":"tcp-53","protocol":"TCP"}] coredns
如何使该命令适用于部署中的所有 pod?
谢谢, EM
使用可以使用
--all-namespaces
参数(或-A
):
kubectl get -o jsonpath="{.spec.template.spec.containers[*]['ports','name']}" deployments --all-namespaces
如果您想检索特定的
deployment
,这将不起作用,因为无法在所有命名空间中按名称检索资源。
要从每个
ports
中的所有 pod 中获取 name
和 deployments
,您可以运行以下 kubectl
命令:
kubectl get deployments --all-namespaces -o jsonpath="{.items[*].spec.template.spec.containers[*]['ports','name']}"
测试于:
Client Version: version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.1", GitCommit:"8f94681cd294aa8cfd3407b8191f6c70214973a4", GitTreeState:"clean", BuildDate:"2023-01-18T15:58:16Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"darwin/arm64"}
Server Version: version.Info{Major:"1", Minor:"24+", GitVersion:"v1.24.17-eks-8cb36c9", GitCommit:"b114b128d961e18fed9242aed57f37f289bc740f", GitTreeState:"clean", BuildDate:"2023-11-22T21:53:08Z", GoVersion:"go1.20.10", Compiler:"gc", Platform:"linux/amd64"}