namespaces=$(kubectl get namespaces -o jsonpath='{.items[*].metadata.name}')
遍历每个命名空间
for ns in $namespaces; do
echo "Processing namespace: $ns"
# 获取当前命名空间中的所有 Pod
pods=$(kubectl get pods -n $ns -o jsonpath='{.items[*].metadata.name}')
# 遍历每个 Pod 并删除
for pod in $pods; do
# 检查 Pod 是否处于 Running 状态
pod_status=$(kubectl get pod $pod -n $ns -o jsonpath='{.status.phase}')
if [ "$pod_status" == "Running" ]; then
echo "Deleting pod: $pod in namespace: $ns"
kubectl delete pod $pod -n $ns
# 等待 Pod 恢复
while true; do
# 检查 Pod 是否重新创建并处于 Running 状态
new_pod=$(kubectl get pods -n $ns -o jsonpath="{.items[?(@.metadata.deletionTimestamp==null && @.status.phase=='Running')].metadata.name}" | grep -v $pod)
if [ ! -z "$new_pod" ]; then
echo "Pod $new_pod in namespace $ns is running."
break
fi
echo "Waiting for pod in namespace $ns to be recreated and running..."
sleep 5
done
else
echo "Pod $pod in namespace $ns is not in Running state, skipping."
fi
done
done
ssh 到节点上,执行 kubectl get pod -n [命名空间名] | grep [deployment 名] 可以看到这个 deployment 管理的所有 pod,包括这些 pod 的 status 和运行时长,点击滚动升级后,多执行几次这个命令就可以观察到这些 pod 一个一个的被杀掉然后拉起新的,全部 pod 轮一次后就是应用滚动升级完成了
话说你们公司做容器云测试不给培训就直接上岗吗