#!/bin/bash
ips=("10.25.70.3*" "10.25.184.11*" "10.25.18.16*")
ns_array=()
clusters=(wuwqin gauan)
port=30000
function exec {
namespace=$1
pod=$2
cluster=$3
echo === ${cluster} ${namespace} ${pod}
cc=`kubectl exec --kubeconfig=./${cluster} -n ${namespace} ${pod} -- netstat -antup|grep -v grep|grep ":30000"|wc -l`
kubectl describe pod --kubeconfig=./${cluster} -n ${namespace} ${pod} | grep username
}
function check {
ip=$1
result="Failure"
for cluster in ${clusters[@]};do
for ns in "${ns_array[@]}"; do
pod=`kubectl get pod -n ${ns} --kubeconfig=./${cluster} -o wide|grep -E "\s${ip}\s"|awk '{print $1}'`
echo "ns" $ns $pod
if [[ -n $pod ]];then
result="Success"
exec ${ns} ${pod} ${cluster}
break 2
fi
done
# 如果namespace比较少可以用这种方式
#for namespace in `kubectl get ns --kubeconfig=./${cluster} --no-headers|awk '{print $1}'`;do
#pod=`kubectl get pod -A --kubeconfig=./${cluster} --no-headers -o wide|grep -E "\s${ip}\s"|awk '{print $1}'`
#if [[ -n $pod ]];then
#result="Success"
#ns_array+=(${namespace})
#exec ${namespace} ${pod} ${cluster}
#break 2
#fi
#done
while read -r namespace pod; do
result="Success"
ns_array+=(${namespace})
exec ${namespace} ${pod} ${cluster}
break 2
done < <(kubectl get pod -A --kubeconfig=./${cluster} -o wide|grep -E "\s${ip}\s"|awk '{print $1,$2}')
done
if [[ "$result" == "Failure" ]];then
echo === ${ip} no match===
fi
}
for ip in "${ips[@]}"; do
echo $ip "${ns_array[@]}"
check $ip
done
通过连接数据库的pod ip获取pod的信息
于 2024-12-13 17:37:34 首次发布