如何列出在 kubernetes 中为服务提供流量的所有 pod 的名称

Arg*_*dhu 1 kubernetes

我想列出实际上在 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)


Arg*_*dhu 5

这个命令有效

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)