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

如何在kubernetes中按名称获取pod的全名?,kubernetes,Kubernetes,我在skaffold.yaml中有后端服务描述,类似于: ... deploy: helm: releases: - name: 'myapp-backend' chartPath: myapp-chart-backend values: APP_IMAGE: ... namespace: myapp-ns recreatePods: true ... 集群启动后,我有列表播客,kubectl得到播客返回 我需

我在skaffold.yaml中有后端服务描述,类似于:

...
deploy:
  helm:
    releases:
    - name: 'myapp-backend'
      chartPath: myapp-chart-backend
      values:
        APP_IMAGE: ...
      namespace: myapp-ns
      recreatePods: true
...
集群启动后,我有列表播客,kubectl得到播客返回

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

假设您知道部署“myapp backend”中的名称,在这种情况下,您可以:

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

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

调用kubectl get pods-选择器=。。。您可能需要在您的环境中添加更多选择器 假设输出是json。这里有一个巧妙的技巧是使用:kubectl get pods-selector=app=-o json检查json。您将得到一个格式正确的json,您可以检查并查看您实际想要得到的内容。 通过jsonpath查询仅通过提供jsonpath表达式来查询所需的json部分,例如{.items[0].metadata.name}也可以使用
Hi-oc get pods-o name只列出名称这可能不应该是您的核心工作流程的一部分:每次您重新部署映像或Kubernetes将您的pod移动到不同的节点,或您的部署向上扩展,或。。。您必须重复此手动步骤。无论您在复制什么,最好直接将其包含在映像中,或者使用像ConfigMap或机密之类的东西,以便在部署时包含小文件。@Suresh Vishnoi什么是oc命令?kubectl?对不起,你可以用kubectl替换oc,这样kubectl就可以得到pods-o nameOk,通过这个命令我就有了pods的列表。但我如何只选择一个,这是由myapp后端生成的?不要选择myapp后端redis。通过grep命令或其他搜索命令?在my deployment.yaml中,我的选择器应用程序具有testapp值,因此我需要使用-selector=app=testapp。但是有些部署使用这对app=testapp,因此您的命令会返回多个结果。为什么不在deployment.yaml中再添加一个标签以唯一地选择您的应用程序?这就是标签的作用。@Log请查看我答案的更新,希望它更有意义。
kubectl get pods --selector=app=myapp-backend -o jsonpath='{.items[*].metadata.name}'