新手区 容器云新手求助

peng43 · 2024年07月22日 · 最后由 peng43 回复于 2024年07月23日 · 3329 次阅读


佬们,想问一下如何操作步骤:进入节点查看 pod 更新状态,每次杀掉一个实例,运行一个实例后继续杀下一个实例,直到所有实例更新完成

共收到 4 条回复 时间 点赞

#!/bin/bash

获取所有命名空间

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

echo "执行完毕"

ssh 到节点上,执行 kubectl get pod -n [命名空间名] | grep [deployment 名] 可以看到这个 deployment 管理的所有 pod,包括这些 pod 的 status 和运行时长,点击滚动升级后,多执行几次这个命令就可以观察到这些 pod 一个一个的被杀掉然后拉起新的,全部 pod 轮一次后就是应用滚动升级完成了
话说你们公司做容器云测试不给培训就直接上岗吗

alexorchen 回复

我也想说来着,这个应该是刚进公司执行别人写的用例,但是不会执行,是不敢问别人还是别人不教呢,这种应该直接问写用例的同学就可以了

alexorchen 回复

没有培训,就让自己熟悉系统,不懂问,但是之前没有接触过这方面

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册