在我的k8集群中,我运行的pod名称包含单词“inventory”(实际上是2 pod),我需要写一个shell脚本来删除部署并重新部署,然后它应该检查特定的pod是否正在运行,然后显示一条消息。这就是我所尝试的。
#!/bin/bash
cd /apps/application/application_yamls_develop/deployment-artifacts/inventory-service
kubectl delete -f inventory-service.yaml -n back-end
kubectl apply -f inventory-service.yaml -n back-end
sleep 20
pod_name="inventory"
namespace="back-end"
# Get the pod status
pod_status=$(kubectl get pods -n "$namespace" -o jsonpath="{.items[?(@.metadata.name.includes('$pod_name'))].status.phase}")
# Check if any matching pod is running
if [[ -n "$pod_status" ]]; then
echo "Pod running"
else
echo "Pod not running"
fi
但这是给bellow错误。
error: error parsing jsonpath {.items[?(@.metadata.name.includes('inventory'))].status.phase}, unclosed array expect ]
有人能指出这个问题吗?
谢谢..!
3条答案
按热度按时间2j4z5cfb1#
你能试试这个吗
xytpbqjk2#
在k8s docs中找到答案
filter语句中的部分名称将不起作用,您必须在此处设置完整的pod名称:
所以首先你需要得到所有的pod和grep他们一些如何得到所需的pod,然后检查它的状态。或者按照k8s文档中的建议使用
jq
。或者同时获取名称和状态:
然后grep需要pod,你会得到状态。
csbfibhn3#
这可以通过使用以下脚本中指定的pod标签来实现(相应地修改由您提供)