video-iac/scripts/describe-nodes-verbose

46 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# This script iterates through all nodes in a Kubernetes cluster and, for each node,
# provides a detailed description and lists all the pods running on it.
# Set color codes for better readability
BLUE='\033[0;34m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
echo -e "${BLUE}Fetching list of all nodes in the cluster...${NC}"
# Get a list of all node names, skipping the header row.
# 'kubectl get nodes --no-headers' gets the node list without the header.
# 'awk '{print $1}'' prints only the first column (the node names).
NODE_LIST=$(kubectl get nodes --no-headers | awk '{print $1}')
# Check if any nodes were found to prevent errors.
if [ -z "$NODE_LIST" ]; then
echo "Error: No nodes found in the cluster."
exit 1
fi
echo -e "${GREEN}Found nodes. Starting inspection...${NC}"
# Loop through each node name in the list.
for node in $NODE_LIST; do
# Print a clear separator for each node's output.
echo -e "\n${BLUE}======================================================================${NC}"
echo -e "${GREEN}Processing Node: $node${NC}"
echo -e "${BLUE}======================================================================${NC}\n"
# --- Command 1: Describe Node ---
echo -e "${GREEN}### Describing node details for '$node'...${NC}"
kubectl describe node "$node"
echo "" # Add a newline for spacing
# --- Command 2: Get Pods on Node ---
echo -e "${GREEN}### Listing all pods on '$node'...${NC}"
kubectl get pods --all-namespaces --field-selector spec.nodeName="$node"
echo ""
done
echo -e "${BLUE}Script finished processing all nodes.${NC}"