查看文件中某个值
v1
for pod in $(kubectl get pod -oname -A |grep 'vastbase' ); do
base_name=$(echo "$pod" | sed 's|pod/||' | sed 's/-[0-9]\+-[0-9]\+$//')
json_path="/pgdata/data/$base_name/has.dynamic.json"
max_connections=$(ka exec -it "$pod" -c postgres -- cat $json_path | grep -o '"max_connections":[^,]*' | awk -F ':' '{print $2}' | tr -d ' ,')
echo "$pod has max_connections $max_connections"
done
v2
for pod in $(kubectl get pod -o name -n qfusion-admin | grep 'vastbase'); do
# 从 Pod 名称中提取基础名称
base_name=$(echo "$pod" | sed 's/pod\/\(.*\)-[0-9]\+-[0-9]\+$/\1/')
# 定义容器内部的 JSON 文件路径
json_path="/pgdata/data/$base_name/has.dynamic.json"
# 使用 kubectl exec 命令在 Pod 内部执行 cat 命令获取文件内容
# 这里假设所有 Pod 都只有一个容器,如果多个容器需要指定容器名称
json_content=$(kubectl exec "$pod" -n qfusion-admin -- cat "$json_path")
# 检查是否成功获取到内容
if [ -z "$json_content" ]; then
echo "Failed to get content for $pod"
continue
fi
# 使用 grep 和 awk 提取 max_connections 的值
# 这里假设 max_connections 的值是直接赋值的,并且格式正确
max_connections=$(echo "$json_content" | grep -oP '"max_connections":\s*\K\d+')
# 输出结果
if [ -n "$max_connections" ]; then
echo "$pod has max_connections $max_connections"
else
echo "max_connections not found for $pod"
fi
done
查看数据库配置
mkdir /tmp/parameter/
#!/bin/bash
NAMESPACE="qfusion-admin"
CONTAINER="postgres"
#COMMAND=""
# 获取命名空间中所有 Pod 的名称
PODS=$(kubectl get pods -n $NAMESPACE -o=jsonpath='{.items[*].metadata.name}')
# 遍历每个 Pod 并执行命令
for POD in $PODS; do
kubectl exec -it $POD -n "$NAMESPACE" -c "$CONTAINER" -- bash -c "vsql -c 'copy(select name,setting from pg_settings) to stdout with csv header';" >/tmp/parameter/${POD}.csv;
done