kubernetes kubectl exec到容器中,而不使用pod名称末尾的随机guid

6ju8rftf  于 2023-05-06  发布在  Kubernetes
关注(0)|答案(4)|浏览(142)

要执行到pod中的容器中,我使用以下两个命令(注意第一个命令中的template标志将输出调整为仅打印pod的名称):

$ kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
app-api-6421cdf4fd-x9tbk
app-worker-432f86f54-fknxw
app-frontend-87dd65d49c-6b4mn
app-rabbit-413632c874-s2ptw

$ kubectl exec -it app-api-6421cdf4fd-x9tbk -- bash

执行到容器中会很好,而不必每次都在pod名称的末尾发现随机guid。我该怎么做?

m3eecexj

m3eecexj1#

您可以使用deployment exec到pod中
可以使用以下命令:

kubectl exec -it deploy/<deployment-name> -- bash
3pmvbmvn

3pmvbmvn2#

假设您有一个名为myadmin、命名空间为demoDeployment。在deploy之后,您可以通过运行以下命令执行到deploy的pod中:

$ export id=( kubectl get pod -n demo | grep 'myadmin' | awk 'END {print $1}' | xargs echo) && kubectl -n demo exec -it $id -- bash
68bkxrlz

68bkxrlz3#

我相信你预料到了。
(下面使用sed 's/pod\///',因为kubectl get pod -o name给了你像pod/rabbitmq-0这样的名字,你应该剪下第一部分)

kubectl exec -it $(kubectl get pod -o name |  sed 's/pod\///' | grep api) -- bash

与前一个类似,您可以使用任何已知的命令来查找和排序所需的对象。提供您最初问题的版本

kubectl exec -it $(kubectl get pod --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'| grep api) -- bash
uwopmtnx

uwopmtnx4#

您的pod可能与一个service(kind: Service)相关,因此您可以使用它来连接到一个可用的pod:

kubectl exec -ti service/<your-service> -- bash

相关问题