不使用kubectl rollout status
时间: 2023-12-10 11:05:12 浏览: 147
kubectl-1.27.3-windows版
如果您不想使用 `kubectl rollout status`,您可以尝试使用以下方法来检查部署状态和重启次数:
```bash
#!/bin/bash
max_restart_count=1
restart_count=0
while true; do
ready_replicas=$(kubectl get deployment ${APP_NAME} -n ${NAMESPACE} -o jsonpath='{.status.readyReplicas}')
updated_replicas=$(kubectl get deployment ${APP_NAME} -n ${NAMESPACE} -o jsonpath='{.status.updatedReplicas}')
available_replicas=$(kubectl get deployment ${APP_NAME} -n ${NAMESPACE} -o jsonpath='{.status.availableReplicas}')
if [[ "$ready_replicas" == "$updated_replicas" && "$updated_replicas" == "$available_replicas" ]]; then
echo "Deployment ${APP_NAME} rolled out successfully"
break
fi
restart_count=$(kubectl get pods -l app=${APP_NAME} -n ${NAMESPACE} -o jsonpath='{range .items[*]}{@.status.containerStatuses[0].restartCount}' | awk '{sum+=$1}END{print sum}')
if ((restart_count > max_restart_count)); then
echo "Pod restart count exceeded the threshold. Deployment ${APP_NAME} failed."
exit 1
fi
sleep 5
done
```
在这个修改后的代码中,我使用了 `kubectl get deployment` 命令来获取部署的各个副本的状态信息。通过比较 `readyReplicas`、`updatedReplicas` 和 `availableReplicas` 的值,可以判断部署是否成功。
同时,我保留了获取重启次数的逻辑,使用了相同的方式来获取所有 Pod 的重启次数,并进行了求和操作。
请注意,这种方法仍然是一种简化的方式,它假设部署的所有副本都应该具有相同的状态信息。如果您需要更精确的检查,建议使用更强大的工具或自定义脚本来实现。
希望这次的回答能够满足您的需求。如果您还有其他问题,请随时提问。
阅读全文