diff --git a/cluster/check_nodes.sh b/cluster/check_nodes.sh index 3b32ffe..9093b12 100755 --- a/cluster/check_nodes.sh +++ b/cluster/check_nodes.sh @@ -21,14 +21,14 @@ NODES=$(kubectl get nodes --no-headers) # 統計 NODE_TOTAL=$(echo "$NODES" | wc -l) 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 "總節點數: $NODE_TOTAL" -echo -e " ${GREEN}Ready: $NODE_READY${NC}" +echo -e " ${GREEN}✓ Ready: $NODE_READY${NC}" if [ $NODE_NOT_READY -gt 0 ]; then - echo -e " ${RED}NotReady: $NODE_NOT_READY${NC}" + echo -e " ${RED}✗ NotReady: $NODE_NOT_READY${NC}" fi echo "" @@ -36,9 +36,17 @@ 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" ICON="✓" else @@ -47,30 +55,34 @@ while read -r name status roles age version internal_ip os kernel runtime; do fi # 角色簡化 - if [[ "$roles" == *"control-plane"* ]]; then + if [[ "$ROLES" == *"control-plane"* ]]; then ROLE="${BLUE}[master]${NC}" - elif [[ "$roles" == "" ]]; then + elif [[ "$ROLES" == "" ]]; then ROLE="[worker]" else - ROLE="$roles" + ROLE="$ROLES" fi # 輸出 - echo -e "${STATUS_COLOR}$ICON $name${NC} $ROLE" - echo " 狀態: $status" - echo " IP: $internal_ip" - echo " OS: $os $kernel" + echo -e "${STATUS_COLOR}$ICON $NAME${NC} $ROLE" + echo " 狀態: $STATUS" + echo " IP: $INTERNAL_IP" + echo " OS: $OS $KERNEL" echo "" -done <<< "$NODES" +done # Pod 分佈 echo "📦 Pod 分佈" 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) -echo "..." -echo "總 Pod 數: $POD_TOTAL" +POD_TOTAL=$(kubectl get pods -A --no-headers 2>/dev/null | wc -l) +if [ $POD_TOTAL -gt 15 ]; then + echo " ..." +fi +echo " 總 Pod 數: $POD_TOTAL" echo "" echo "=========================================="