Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用pod名称执行kubernetes pod_Bash_Shell_Kubernetes_Kubectl - Fatal编程技术网

Bash 使用pod名称执行kubernetes pod

Bash 使用pod名称执行kubernetes pod,bash,shell,kubernetes,kubectl,Bash,Shell,Kubernetes,Kubectl,我正在编写一个shell脚本,用于执行pod,其语法为: winpty kubectl --kubeconfig="C:\kubeconfig" -n namespace exec -it podname bash 这很好,但由于podname不稳定,并且每次部署都会发生变化,所以有其他选择吗 谢谢。您可以使用以下命令: kubectl -n <namespace> exec -it deploy/<deployment-name> -- bash kubectl-

我正在编写一个shell脚本,用于执行pod,其语法为:

winpty  kubectl --kubeconfig="C:\kubeconfig" -n namespace exec -it podname bash
这很好,但由于podname不稳定,并且每次部署都会发生变化,所以有其他选择吗


谢谢。

您可以使用以下命令:

kubectl -n <namespace> exec -it deploy/<deployment-name> -- bash
kubectl-n exec-it deploy/--bash
在应用程序中添加一个:

正如你所知,豆荚是短暂的;它们动态地进出,以确保您的应用程序与您的配置保持一致。此行为实现了kubernetes的缩放和自愈功能

您的应用程序将由一个或多个可通过访问的POD组成,应用程序的服务名称和地址不会更改,因此充当访问应用程序的稳定接口

如果应用程序有一个pod或多个pod,此方法都有效

这有帮助吗?

您可以正常使用该命令,但可以定义用于更改pod名称的值

假设您有部署并标记为pods:app=example,只需执行:

$ kubectl exec -it $(kubectl get pods -l app=example -o custom-columns=:metadata.name) -- bash
编辑:

您还可以执行:

POD_NAME = $(kubectl get pods -l app=example -o custom-columns=":metadata.name")

最后

$ winpty kubectl exec -ti $POD_NAME --bash

确保您在正确的名称空间中执行命令-您还可以添加
-n
标志并定义它。

您有部署吗?我相信OP引用的是一个稳定的名称,通过kubernetes API访问pod,而不是一个普通的客户端。您在什么样的环境中工作正常?请显示命令的输出:kubectl get pods-l app=example-o custom columns=:metadata.name?当然,如果你有pods label app=exampl(你可以使用与你的pod连接的不同标签)。执行此命令会给我pod名称,我正在windows上执行此命令。我已经用其他信息编辑了答案-看一看。
$ winpty kubectl exec -ti $POD_NAME --bash