You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确保Kubernetes Deployment的Pod全部缩容至零及脚本检查方法

在Shell脚本中验证Kubernetes Deployment缩容至0副本的方法

以下是两种可靠的实现方案,均包含超时逻辑避免脚本无限挂起:

方案1:直接检查Deployment的可用副本数

通过提取Deployment状态字段来判断缩容是否完成,比解析文本输出更稳定:

# 配置参数
DEPLOYMENT_NAME="openet-k6"
NAMESPACE="default"  # 非默认命名空间时修改此处
TIMEOUT=300          # 超时时间(秒)
INTERVAL=5           # 检查间隔(秒)

START_TIME=$(date +%s)

while true; do
    # 获取可用副本数,处理字段为空或命令执行失败的情况
    AVAILABLE_REPLICAS=$(kubectl get deployment $DEPLOYMENT_NAME -n $NAMESPACE -o jsonpath='{.status.availableReplicas}' 2>/dev/null || echo 0)
    AVAILABLE_REPLICAS=${AVAILABLE_REPLICAS:-0}

    if [ "$AVAILABLE_REPLICAS" -eq 0 ]; then
        echo "Deployment $DEPLOYMENT_NAME 已成功缩容至0副本"
        exit 0
    fi

    # 检查超时
    CURRENT_TIME=$(date +%s)
    ELAPSED_TIME=$((CURRENT_TIME - START_TIME))
    if [ "$ELAPSED_TIME" -ge "$TIMEOUT" ]; then
        echo "超时:Deployment $DEPLOYMENT_NAME 未能在$TIMEOUT秒内完成缩容"
        exit 1
    fi

    echo "等待缩容中,当前可用副本数:$AVAILABLE_REPLICAS,已等待$ELAPSED_TIME秒..."
    sleep $INTERVAL
done

方案2:检查对应标签的Pod数量

直接统计属于该Deployment的活跃Pod数量,适合需要确认Pod完全终止的场景:

# 配置参数
DEPLOYMENT_NAME="openet-k6"
NAMESPACE="default"
TIMEOUT=300
INTERVAL=5

# 获取Deployment的标签选择器
SELECTOR=$(kubectl get deployment $DEPLOYMENT_NAME -n $NAMESPACE -o jsonpath='{.spec.selector.matchLabels}' | tr '=' ',' | tr ' ' ',')

START_TIME=$(date +%s)

while true; do
    # 统计匹配标签的活跃Pod数量
    POD_COUNT=$(kubectl get pods -n $NAMESPACE -l $SELECTOR --no-headers 2>/dev/null | wc -l)

    if [ "$POD_COUNT" -eq 0 ]; then
        echo "Deployment $DEPLOYMENT_NAME 对应的Pod已全部终止,缩容完成"
        exit 0
    fi

    # 检查超时
    CURRENT_TIME=$(date +%s)
    ELAPSED_TIME=$((CURRENT_TIME - START_TIME))
    if [ "$ELAPSED_TIME" -ge "$TIMEOUT" ]; then
        echo "超时:未能在$TIMEOUT秒内终止所有Pod,当前剩余Pod数:$POD_COUNT"
        exit 1
    fi

    echo "等待Pod终止中,当前剩余Pod数:$POD_COUNT,已等待$ELAPSED_TIME秒..."
    sleep $INTERVAL
done

注意事项

  • 若Deployment不在默认命名空间,必须正确设置NAMESPACE参数
  • 可根据集群性能调整INTERVAL和TIMEOUT的值
  • 如需更严谨的验证,可同时检查readyReplicas字段是否为0

内容的提问来源于stack exchange,提问作者Starbucks Admin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:05:01