如何在Kubernetes中按名称获取pod的全名?

时间:2020-01-28 12:28:09

标签: kubernetes

我在skaffold.yaml中有类似以下内容的后端服务描述:

...
deploy:
  helm:
    releases:
    - name: 'myapp-backend'
      chartPath: myapp-chart-backend
      values:
        APP_IMAGE: ...
      namespace: myapp-ns
      recreatePods: true
...

集群启动后,我会列出列表窗格,然后kubectl get pods返回

...
myapp-backend-7dbf4b6fb8-kw7zv
myapp-backend-redis-646f454bcb-7thrc
...

我需要pod(myapp-backend-7dbf4b6fb8-kw7zv)的全名才能在需要全名的kubectl cp命令中使用。 但是此命令是在bash脚本中运行的,因此需要通过名称myapp-backend-7dbf4b6fb8-kw7zv获得全名myapp-backend

1 个答案:

答案 0 :(得分:1)

假设您知道部署中的名称(在本例中为“ myapp-backend”),则可以:

kubectl get pods --selector=app=myapp-backend -o jsonpath='{.items[*].metadata.name}'

更新

由于我显然无法访问您的环境,因此我提供了一种通用的解决方案路径,您可以摆弄此命令,但想法可能会保持不变:

  1. 致电kubectl get pods --selector=...(有可能您应该在__您的__环境中添加更多选择器)
  2. 假设输出为json。这里的一个妙招是使用kubectl get pods --selector=app=<myapp-backend> -o json检查json。您将获得一个格式正确的json,可以对其进行检查,并查看您实际想要获取的哪个部分。
  3. 通过jsonpath来查询所需的json部分,方法是提供jsonpath表达式,例如{.items[0].metadata.name}也可以使用