kubernetes 如何在一行程序中获得并描述a pod?

zxlwwiss  于 2023-05-28  发布在  Kubernetes
关注(0)|答案(2)|浏览(90)

使用kubectl,我想describe一个在labelSelector上过滤的pod(可以是随机的)。目前,我分两步执行:

  1. get豆荚
    1.复制其中一个结果的名称,然后describe它。
$ kubectl get pods -l app=my-app,environment=production
$ kubectl describe pods my-pod-name-copied-from-the-results

我可以用一行程序做到这一点,而不必每次都复制pod名称吗?

qv7cva1a

qv7cva1a1#

一行代码用于获取第一个pod的描述(如果缩放到大于1):

kubectl -n namespace describe po "$(kubectl -n namespace get po -l app.kubernetes.io/name=my-app --no-headers -o name|cut -d/ -f2|head -1)"

如果你需要一个随机的(如在其他答案的评论中提到的):

kubectl -n namespace describe po "$(kubectl -n namespace get po -l app.kubernetes.io/name=my-app --no-headers -o name|cut -d/ -f2|shuf -n1)"
kqlmhetl

kqlmhetl2#

你可以试试这样的:

**注意:**仅适用于单个pod!

kubectl describe pods $(basename $(kubectl get pods -l job-name=curl-job -o name --no-headers))

说明:

kubectl get pods -l job-name=curl-job -o name --no-headers

返回具有给定标签的pod的名称,例如:
pod/curl-job-p5rsb
但是如果你只使用这个,你会得到:

error: there is no need to specify a resource type as a separate argument when passing arguments in resource/name form

因此,我们使用basename来去除pod/部分:
运行:

basename $(kubectl get pods -l job-name=curl-job -o name --no-headers)

退货:

curl-job-p5rsb

现在,您可以将其作为参数传递给kubectl describe pods
这就完成了整个命令。

kubectl describe pods \
   $(basename $(kubectl get pods -l job-name=curl-job -o name --no-headers))

编辑:
如果你想从很多pod中获取最上面的pod,可以使用head -n 1,如下所示:

kubectl describe pods $(basename $(kubectl get pods -l stage=test8 -o name --no-headers | head -n 1))

相关问题