fix: correct variable parsing in check_nodes.sh

This commit is contained in:
2026-04-01 17:02:21 +08:00
parent b5b04f2ae5
commit e409a29459

View File

@@ -21,14 +21,14 @@ NODES=$(kubectl get nodes --no-headers)
# 統計 # 統計
NODE_TOTAL=$(echo "$NODES" | wc -l) NODE_TOTAL=$(echo "$NODES" | wc -l)
NODE_READY=$(echo "$NODES" | grep -c " Ready " || true) NODE_READY=$(echo "$NODES" | grep -c " Ready " || true)
NODE_NOT_READY=$(echo "$NODES" | grep -v " Ready " | wc -l) NODE_NOT_READY=$((NODE_TOTAL - NODE_READY))
echo "📊 叢集概況" echo "📊 叢集概況"
echo "------------------------------------------" echo "------------------------------------------"
echo "總節點數: $NODE_TOTAL" echo "總節點數: $NODE_TOTAL"
echo -e " ${GREEN}Ready: $NODE_READY${NC}" echo -e " ${GREEN}Ready: $NODE_READY${NC}"
if [ $NODE_NOT_READY -gt 0 ]; then if [ $NODE_NOT_READY -gt 0 ]; then
echo -e " ${RED}NotReady: $NODE_NOT_READY${NC}" echo -e " ${RED}NotReady: $NODE_NOT_READY${NC}"
fi fi
echo "" echo ""
@@ -36,9 +36,17 @@ echo ""
echo "🖥️ 節點詳細資訊" echo "🖥️ 節點詳細資訊"
echo "------------------------------------------" echo "------------------------------------------"
while read -r name status roles age version internal_ip os kernel runtime; do echo "$NODES" | while IFS= read -r line; do
# 解析每個欄位
NAME=$(echo "$line" | awk '{print $1}')
STATUS=$(echo "$line" | awk '{print $2}')
ROLES=$(echo "$line" | awk '{print $3}')
INTERNAL_IP=$(echo "$line" | awk '{print $6}')
OS=$(echo "$line" | awk '{print $7}')
KERNEL=$(echo "$line" | awk '{print $8}')
# 顏色判斷 # 顏色判斷
if [[ "$status" == "Ready"* ]]; then if [[ "$STATUS" == "Ready"* ]]; then
STATUS_COLOR="$GREEN" STATUS_COLOR="$GREEN"
ICON="✓" ICON="✓"
else else
@@ -47,29 +55,33 @@ while read -r name status roles age version internal_ip os kernel runtime; do
fi fi
# 角色簡化 # 角色簡化
if [[ "$roles" == *"control-plane"* ]]; then if [[ "$ROLES" == *"control-plane"* ]]; then
ROLE="${BLUE}[master]${NC}" ROLE="${BLUE}[master]${NC}"
elif [[ "$roles" == "<none>" ]]; then elif [[ "$ROLES" == "<none>" ]]; then
ROLE="[worker]" ROLE="[worker]"
else else
ROLE="$roles" ROLE="$ROLES"
fi fi
# 輸出 # 輸出
echo -e "${STATUS_COLOR}$ICON $name${NC} $ROLE" echo -e "${STATUS_COLOR}$ICON $NAME${NC} $ROLE"
echo " 狀態: $status" echo " 狀態: $STATUS"
echo " IP: $internal_ip" echo " IP: $INTERNAL_IP"
echo " OS: $os $kernel" echo " OS: $OS $KERNEL"
echo "" echo ""
done <<< "$NODES" done
# Pod 分佈 # Pod 分佈
echo "📦 Pod 分佈" echo "📦 Pod 分佈"
echo "------------------------------------------" echo "------------------------------------------"
kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.spec.nodeName}{"\n"}' | awk '{print $1, $2, "→", $3}' | column -t | head -20 kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.spec.nodeName}{"\n"}{end}' 2>/dev/null | grep -E "(vm120|vm121|vm122)" | while IFS=$'\t' read -r ns pod node; do
echo " $pod ($ns) → $node"
done | head -15
POD_TOTAL=$(kubectl get pods -A --no-headers | wc -l) POD_TOTAL=$(kubectl get pods -A --no-headers 2>/dev/null | wc -l)
if [ $POD_TOTAL -gt 15 ]; then
echo " ..." echo " ..."
fi
echo " 總 Pod 數: $POD_TOTAL" echo " 總 Pod 數: $POD_TOTAL"
echo "" echo ""