#!/bin/bash max_restart_count=1 restart_count=0 status=$(kubectl rollout status deployment ${APP_NAME} -n ${NAMESPACE}) while true; do if [[ $status == *"successfully rolled out"* ]]; then echo "Deploy ${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}{"\n"}{end}' | 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
时间: 2024-02-10 15:29:52 浏览: 131
您提供的代码片段是对前面提到的检查启次数和部署状态的 Bash 脚本的进一步改进。在这个新的代码片段中,您将部署状态的检查移动到了循环开始之前。
以下是您提供的修改后的代码片段:
```bash
#!/bin/bash
max_restart_count=1
restart_count=0
status=$(kubectl rollout status deployment ${APP_NAME} -n ${NAMESPACE})
while true; do
if [[ $status == *"successfully rolled out"* ]]; then
echo "Deploy ${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}{"\n"}{end}' | 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
```
在这个改进后的代码中,首先获取一次部署的状态,并将其保存在 `status` 变量中。然后,进入循环,检查部署状态和重启次数。如果部署成功完成,脚本将输出成功消息并跳出循环。如果重启次数超过阈值,脚本将输出失败消息并退出。
希望这可以满足您的需求!如果您有其他问题,请随时提问。
阅读全文