如果pod名称随每次部署而更改,如何在shell脚本中执行kubernetes中的pod

hec6srdp  于 2023-01-21  发布在  Shell
关注(0)|答案(2)|浏览(281)

每个部署的相同pod具有不同的名称,因此如何将其放入shell脚本中,以便我们可以在不更改每个部署的脚本的情况下对pod执行它
第一次展开
命名空间名称就绪
默认调用-f6 f8 cfd 84 - 5l 6 zv 3/3
第二次解聚
默认调用-7 gcfrd 45 d-264 df 3/3
尝试了多种方法,但不起作用

6gpjuf90

6gpjuf901#

您也可以执行到statefulset/deployment或其他k8s工作负载中。这将允许您执行到工作负载部署的第一个pod中。下面的示例显示了如何使用bash shell在交互模式下执行到由demo名称空间中的statefulset db-cluster部署的第一个pod中。我希望这能有所帮助!

kubectl exec -it -n demo sts/db-cluster -- bash
apeeds0o

apeeds0o2#

您可以使用Kuberneteskubectl命令根据特定条件(如pod的标签或部署的名称)动态检索pod名称。
以下是一些例子:
根据部署名称获取pod名称:

pod_name=$(kubectl get pods -l pod=call -o jsonpath='{.items[0].metadata.name}')

此命令检索具有pod = call标签的第一个pod的pod名称,并将其分配给变量pod_name。
根据部署名称获取pod名称:

deployment_name=call
pod_name=$(kubectl get pods -l pod=${deployment_name} -o jsonpath='{.items[0].metadata.name}')

此命令检索具有pod = call标签的第一个pod的pod名称,并将其分配给变量pod_name。
根据命名空间和部署名称获取pod名称:

namespace=default
deployment_name=call
pod_name=$(kubectl get pods -n ${namespace} -l pod=${deployment_name} -o jsonpath='{.items[0].metadata.name}')

此命令检索名称空间default中具有标签pod = call的第一个pod的pod名称,并将其分配给变量pod_name。
在变量中包含pod名称后,可以在shell脚本中使用它来对该pod执行命令。
您可以使用以下命令获取pod标签名称:

kubectl describe pod {pod_name}

每次部署更改时,标签均相同。
注意,这种方法检索第一个与指定标签和名称空间匹配的pod的名称,因此假设只有一个pod具有该标签和名称空间。如果有多个pod符合条件,则需要找到一种方法来选择要在其上执行命令的特定pod。

相关问题