每个部署的相同pod具有不同的名称,因此如何将其放入shell脚本中,以便我们可以在不更改每个部署的脚本的情况下对pod执行它第一次展开命名空间名称就绪默认调用-f6 f8 cfd 84 - 5l 6 zv 3/3第二次解聚默认调用-7 gcfrd 45 d-264 df 3/3尝试了多种方法,但不起作用
6gpjuf901#
您也可以执行到statefulset/deployment或其他k8s工作负载中。这将允许您执行到工作负载部署的第一个pod中。下面的示例显示了如何使用bash shell在交互模式下执行到由demo名称空间中的statefulset db-cluster部署的第一个pod中。我希望这能有所帮助!
demo
db-cluster
kubectl exec -it -n demo sts/db-cluster -- bash
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。
2条答案
按热度按时间6gpjuf901#
您也可以执行到statefulset/deployment或其他k8s工作负载中。这将允许您执行到工作负载部署的第一个pod中。下面的示例显示了如何使用bash shell在交互模式下执行到由
demo
名称空间中的statefulsetdb-cluster
部署的第一个pod中。我希望这能有所帮助!apeeds0o2#
您可以使用Kuberneteskubectl命令根据特定条件(如pod的标签或部署的名称)动态检索pod名称。
以下是一些例子:
根据部署名称获取pod名称:
此命令检索具有pod = call标签的第一个pod的pod名称,并将其分配给变量pod_name。
根据部署名称获取pod名称:
此命令检索具有pod = call标签的第一个pod的pod名称,并将其分配给变量pod_name。
根据命名空间和部署名称获取pod名称:
此命令检索名称空间default中具有标签pod = call的第一个pod的pod名称,并将其分配给变量pod_name。
在变量中包含pod名称后,可以在shell脚本中使用它来对该pod执行命令。
您可以使用以下命令获取pod标签名称:
每次部署更改时,标签均相同。
注意,这种方法检索第一个与指定标签和名称空间匹配的pod的名称,因此假设只有一个pod具有该标签和名称空间。如果有多个pod符合条件,则需要找到一种方法来选择要在其上执行命令的特定pod。