improve: make check_nodes.sh more readable with colors and summary
This commit is contained in:
@@ -1,7 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
# 用途:檢查叢集節點狀態
|
||||
# 用途:檢查 K3s 叢集節點狀態
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
kubectl get nodes -o wide
|
||||
# 顏色定義
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo "=========================================="
|
||||
echo " K3s 叢集節點狀態"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# 取得節點資訊
|
||||
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)
|
||||
|
||||
echo "📊 叢集概況"
|
||||
echo "------------------------------------------"
|
||||
echo "總節點數: $NODE_TOTAL"
|
||||
echo -e " ${GREEN}Ready: $NODE_READY${NC}"
|
||||
if [ $NODE_NOT_READY -gt 0 ]; then
|
||||
echo -e " ${RED}NotReady: $NODE_NOT_READY${NC}"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 顯示每個節點的詳細資訊
|
||||
echo "🖥️ 節點詳細資訊"
|
||||
echo "------------------------------------------"
|
||||
|
||||
while read -r name status roles age version internal_ip os kernel runtime; do
|
||||
# 顏色判斷
|
||||
if [[ "$status" == "Ready"* ]]; then
|
||||
STATUS_COLOR="$GREEN"
|
||||
ICON="✓"
|
||||
else
|
||||
STATUS_COLOR="$RED"
|
||||
ICON="✗"
|
||||
fi
|
||||
|
||||
# 角色簡化
|
||||
if [[ "$roles" == *"control-plane"* ]]; then
|
||||
ROLE="${BLUE}[master]${NC}"
|
||||
elif [[ "$roles" == "<none>" ]]; then
|
||||
ROLE="[worker]"
|
||||
else
|
||||
ROLE="$roles"
|
||||
fi
|
||||
|
||||
# 輸出
|
||||
echo -e "${STATUS_COLOR}$ICON $name${NC} $ROLE"
|
||||
echo " 狀態: $status"
|
||||
echo " IP: $internal_ip"
|
||||
echo " OS: $os $kernel"
|
||||
echo ""
|
||||
done <<< "$NODES"
|
||||
|
||||
# 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
|
||||
|
||||
POD_TOTAL=$(kubectl get pods -A --no-headers | wc -l)
|
||||
echo "..."
|
||||
echo "總 Pod 數: $POD_TOTAL"
|
||||
echo ""
|
||||
|
||||
echo "=========================================="
|
||||
|
||||
Reference in New Issue
Block a user