重启指定Kubernetes节点上的所有Pod
以下是一个Python脚本,可以重启指定Kubernetes节点上的所有Pod,并在每次重启两个Pod后等待10秒钟再重启下两个Pod。请确保您已经安装了Kubernetes Python客户端(kubernetes):
from kubernetes import client, config
import time
# 加载Kubernetes配置
config.load_kube_config()
# 指定节点名称
node_name = "your-node-name"
# 获取所有在该节点上的Pod
v1 = client.CoreV1Api()
pod_list = v1.list_pod_for_all_namespaces(field_selector=f"spec.nodeName={node_name}").items
# 重启Pod
restart_count = 0
for pod in pod_list:
# 重启Pod
api_response = v1.delete_namespaced_pod(
name=pod.metadata.name,
namespace=pod.metadata.namespace,
body=client.V1DeleteOptions(propagation_policy='Foreground'),
)
# 等待10秒钟后重启下两个Pod
restart_count += 1
if restart_count % 2 == 0:
print(f"已经重启了{restart_count}个Pod,等待10秒钟...")
time.sleep(10)
请将“your-node-name”替换为要重启其上的Pod的节点的名称。然后,只需运行脚本即可开始重启Pod。
以下是一个Shell脚本的示例,它将重启指定 Kubernetes 节点上的所有 Pod,并在每次重启两个 Pod 后等待 10 秒钟再重启下两个 Pod。请确保您已经安装了 Kubernetes 命令行客户端(kubectl):
#!/bin/bash
# 指定节点名称
NODE_NAME="your-node-name"
# 获取所有在该节点上的Pod
POD_NAMES=$(kubectl get pods --field-selector spec.nodeName=$NODE_NAME -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}')
# 重启Pod
RESTART_COUNT=0
for pod_name in $POD_NAMES; do
# 重启Pod
kubectl delete pod $pod_name
# 等待10秒钟后重启下两个Pod
RESTART_COUNT=$((RESTART_COUNT+1))
if [ $((RESTART_COUNT%2)) -eq 0 ]; then
echo "已经重启了$RESTART_COUNT个Pod,等待10秒钟..."
sleep 10
fi
done
请将“your-node-name”替换为要重启其上的 Pod 的节点的名称。然后,只需运行脚本即可开始重启 Pod。