igozhang

——

    节点资源飙高:临时迁移 Pod

    适用:某 Worker 资源告警,需把大户 Pod 临时迁走。
    要点:无 memory request 时,不 cordon 直接删 Pod 往往会落回原节点

    1. 定位(只读)

    timeout 10 bash -c '
    kubectl top node --no-headers
    echo "-----"
    kubectl get pods -A --field-selector spec.nodeName=<NODE_IP> --no-headers \
      -o custom-columns=NS:.metadata.namespace,NAME:.metadata.name,STATUS:.status.phase
    '
    

    对嫌疑 Pod 再确认占用(可按需):

    timeout 10 kubectl top pod -n <NS> <POD_NAME> --no-headers
    

    2. 迁移(cordon + 删 Pod + 验证)

    **变更:**禁止向该节点调度,并删除 Pod 触发重建。

    timeout 10 bash -c '
    kubectl cordon <NODE_IP> && \
    kubectl delete pod -n <NS> <POD_NAME> --wait=false && \
    kubectl get node <NODE_IP> --no-headers && \
    kubectl get pods -n <NS> -o wide --no-headers | grep <APP_KEYWORD>
    '
    

    预期:节点含 SchedulingDisabled;稍后新 Pod 在其他节点 Running。若还未起来,隔几秒再查:

    timeout 10 bash -c '
    kubectl get pods -n <NS> -o wide --no-headers | grep <APP_KEYWORD>
    kubectl top node <NODE_IP> --no-headers
    '
    

    3. 恢复(uncordon + 验证)

    **变更:**恢复该节点可调度。

    timeout 10 bash -c '
    kubectl uncordon <NODE_IP> && \
    kubectl get node <NODE_IP> --no-headers
    '
    

    预期:Ready(无 SchedulingDisabled)。

    注意

    • 优先迁占用最大、多副本/可短暂中断的 Pod;目标侧选 top node 明显更空的节点。
    • 此为止血;长期需配 memory requests / 反亲和,避免再次叠机。

    MP3