我想列出实际上在 kubernetes 服务后面提供流量的所有 pod 的名称。我的问题是如何通过执行单个 kubectl 命令来实现这一点。
Vid*_*lli 11
有两种方法可以列出服务背后的 pod。
更简单的方法,但有两个命令
通过运行以下命令找到选择器
kubectl get services -o=wide
Run Code Online (Sandbox Code Playgroud)
输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
hello-world-service ClusterIP 172.21.xxx.xx <none> 80/TCP 13m run=nginx
Run Code Online (Sandbox Code Playgroud)
将选择器传递给下面的命令
kubectl get pods --selector=run=nginx -o=name
Run Code Online (Sandbox Code Playgroud)
要查看确切的 pod 名称,而无需 pod/
kubectl get pods --selector=run=nginx --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
Run Code Online (Sandbox Code Playgroud)
在单个命令中但使用服务的端点信息 hello-world-service
kubectl get endpoints hello-world-service -o=jsonpath='{.subsets[*].addresses[*].ip}' | tr ' ' '\n' | kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
Run Code Online (Sandbox Code Playgroud)
这个命令有效
kubectl get ep servicename -o=jsonpath='{.subsets[*].addresses[*].ip}' | tr ' ' '\n' | xargs -I % kubectl get pods -o=name --field-selector=status.podIP=%
Run Code Online (Sandbox Code Playgroud)