如何在kubernetes中正确地给出POD名称的模式?

时间:2018-04-30 11:22:58

标签: kubernetes kubectl

我正在使用kubernetes来部署应用程序,

x

查看日志。 重新部署很常见,所以有点不舒服 - 每次都要复制kubect logs 名称以粘贴日志命令(因为每次都会根据pod名称的末尾更改),例如以下是2次部署后相同应用程序的命令

pod

所以,我想使用一个命令,每当我们运行“kubectl logs -n=testns --since=1m testapp-2818008534-jx2vv kubectl logs -n=testns --since=1m testapp-2818008534-xls93 ”时,它将正确地“拾取”所需的POD名称。

但是喜欢

kubectl logs

返回一个错误,我们没有“给出”pod名称,但该pod肯定存在:

$kubectl logs -n=testns --since=1h $(kubectl get pods --namespace=testns | grep testapp)

那么,如何正确设置此命令,每次我们想查看日志时都使用它,而不需要重新复制完整的POD名称?

2 个答案:

答案 0 :(得分:1)

当你这样做时:

kubectl get pods --namespace=testns | grep testapp

你会得到类似的东西:

testapp-54d99599bc-g2gs4 1/1 Running 0 56m

所以这不会很好地使用logs命令,因为它有一些Kubectl无法理解的额外数据。你能做的是:

kubectl get pods --namespace=testns | grep testapp | cut -d' ' -f1

只会生成POD的名称,然后你的日志命令才能生效。

答案 1 :(得分:0)

在大多数情况下,可接受的答案应该有效,但以防万一,请尝试以下替代方法:

kubectl get po | grep testapp | tr -s ' ' | cut -d\  -f 1