sh ''' #!/bin/bash max_restart_count = 1 restart_count = 0 while true; do status = $(kubectl rollout status deployment ${APP_NAME} -n ${NAMESPACE}) 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 $deployment_name failed." exit 1 fi sleep 5 done '''
时间: 2024-02-10 08:27:24 浏览: 113
Born:我的一些来自 ~bin 的 shell 脚本很有趣
从您提供的代码片段来看,您正在使用Bash脚本来监视部署的状态并检查Pod的重启次数。然而,有几个需要注意的问题:
1. 在Bash脚本中,变量的赋值应该是没有空格的。因此,`max_restart_count = 1`和`restart_count = 0`应该修改为`max_restart_count=1`和`restart_count=0`。
2. 在比较字符串时,`[[ $status == *successfully rolled out"* ]]`中的双引号位置不正确。应该将双引号放在正确的位置,即`[[ $status == *"successfully rolled out"* ]]`。
3. 在脚本中,将变量赋值给命令输出时,应该使用反引号(`)或使用$()将命令括起来。因此,将`status = $(kubectl rollout status deployment ${APP_NAME} -n ${NAMESPACE})`修改为`status=$(kubectl rollout status deployment ${APP_NAME} -n ${NAMESPACE})`。
4. 同样地,将`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}')`修改为`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}')`。
以下是修改后的代码片段:
```bash
sh '''
#!/bin/bash
max_restart_count=1
restart_count=0
while true; do
status=$(kubectl rollout status deployment ${APP_NAME} -n ${NAMESPACE})
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 $deployment_name failed."
exit 1
fi
sleep 5
done
'''
```
请注意,我还根据常规的Bash脚本编写风格进行了一些调整,以提高代码的可读性。
希望这可以帮助到您!如果您有任何其他问题,请随时提问。
阅读全文